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次元のデータ構造で、複数のデータ列を含むデータセット全体を管理し、分析するのに適しています。

