PandasはPythonのデータ分析ライブラリで、データ操作における基本的なデータ構造としてDataFrame
とSeries
の2つがあります。
これらの違いを理解することは、Pandasを使いこなすための重要なステップです。
この記事では、DataFrame
とSeries
の違い、使用例、およびそれぞれがどのように役立つかを詳しく解説します。
定義
Series
Series
は、一方向(1次元)の配列データを表現するためのデータ構造です。インデックス(行ラベル)を持ち、リストやNumPy配列のようなシンプルなデータの列を表すことができます。各要素にはインデックスが対応しており、このインデックスを使って個々のデータにアクセスできます。
DataFrame
DataFrame
は、2次元のデータ構造であり、行と列の両方を持ちます。Excelのスプレッドシートやデータベースのテーブルのように、行と列の組み合わせでデータを管理します。複数のSeries
をまとめた構造で、各列が個別のSeries
オブジェクトになります。
構造の違い
特徴 | Series | DataFrame |
---|---|---|
次元数 | 1次元 | 2次元 |
データの形 | 1つの列(ラベル付きの配列) | 行と列を持つ表形式データ |
インデックス | 行ラベル(単一のインデックス) | 行ラベルと列ラベル(インデックスとカラム名) |
データの型 | 単一のデータ型(各要素が同じ型) | 各列ごとに異なるデータ型が許可される |
使用例 | 時系列データ、単一の特徴量 | データ分析、機械学習のデータセット管理 |
作成方法の違い
Seriesの作成
import pandas as pd # リストからSeriesを作成
series_example = pd.Series([10, 20, 30, 40])
rint(series_example)
出力は以下のようになります。
0 10
1 20
2 30
3 40
dtype: int64
DataFrameの作成
import pandas as pd # 辞書からDataFrameを作成
dataframe_example = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [24, 30, 18], 'City': ['New York', 'San Francisco', 'Los Angeles'] })
print(dataframe_example)
出力は以下のようになります。
Name Age City
0 Alice 24 New York
1 Bob 30 San Francisco
2 Charlie 18 Los Angeles
SeriesとDataFrameの相互変換
SeriesからDataFrameに変換
# SeriesをDataFrameに変換
series = pd.Series([100, 200, 300], index=['a', 'b', 'c'])
df_from_series = series.to_frame(name='Values') print(df_from_series)
Values
a 100
b 200
c 300
DataFrameからSeriesに変換
# DataFrameの特定の列をSeriesとして取得
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
series_from_df = df['A'] print(series_from_df)
0 1
1 2
2 3
Name: A, dtype: int64
利用シーンの違い
Seriesを使用する場面
- 単一の時系列データの処理
- 機械学習モデルの単一特徴量として利用
- ラベル付きデータの集計やフィルタリング
DataFrameを使用する場面
- 複数の列を持つデータセットの操作(データクリーニングや分析)
- 機械学習モデルのトレーニングデータ
- データ可視化の準備
メソッドの違い
Series固有のメソッド
Series.value_counts()
: ユニークな値の出現頻度をカウント
Series.mean()
: 平均値を計算
Series.plot()
: 単純なプロットの作成
DataFrame固有のメソッド
DataFrame.describe()
: 統計情報を提供
DataFrame.drop()
: 行や列を削除
DataFrame.groupby()
: グループ化による集計
まとめ
Series
は1次元のデータ構造で、単一のデータの列に対して操作を行うのに適しています。一方、DataFrame
は2次元のデータ構造で、複数のデータ列を含むデータセット全体を管理し、分析するのに適しています。