Traffine I/O

日本語

2022-11-14

Pandasにおけるマルチレベルインデックス

Pandasにおけるマルチレベルインデックスとは

マルチレベルインデックス、または階層的インデックスとも呼ばれるものは、Pandasにおいて複数のインデックスを持つデータを整理する方法です。金融データや科学データなど、複数の次元を持つ複雑なデータセットを表現する際に役立ちます。Pandasにおいて、マルチレベルインデックスは、データの異なる側面を表す複数のレベルのインデックスで構成されます。

マルチレベルインデックスを作成する方法

Pandasでマルチレベルインデックスを作成するには、set_index()関数を使用します。set_index()関数を使用すると、1つまたは複数の列をインデックスとして使用でき、複数の列を渡すことでマルチレベルインデックスを作成することができます。

python
import pandas as pd

data = {'year': [2019, 2019, 2020, 2020],
        'quarter': [1, 2, 1, 2],
        'revenue': [100, 200, 150, 250]}
df = pd.DataFrame(data)
df = df.set_index(['year', 'quarter'])
print(df)
              revenue
year quarter
2019 1            100
     2            200
2020 1            150
     2            250

この例では、year列とquarter列からなるマルチレベルインデックスを持つDataFrameを作成しています。

マルチレベルインデックスを使用したインデックスの操作

Pandasでマルチレベルインデックスを作成したら、そのインデックスを使用してデータを選択および操作することができます。 loc[]およびiloc[]関数を使用して、インデックスレベルに基づいてデータを選択できます。

python
# 2019年、第1四半期のデータを選択する
print(df.loc[(2019, 1)])

# 2020年の全四半期のデータを選択する
print(df.loc[2020])

# すべての年および四半期のデータを選択する
print(df.loc[:])
revenue    100
Name: (2019, 1), dtype: int64
           revenue
quarter
1               150
2               250
              revenue
year quarter
2019 1            100
     2            200
2020 1            150
     2            250

また、xs()関数を使用してインデックスの特定のレベルのデータを選択することもできます。

python
# すべての年の第1四半期のデータを選択する
print(df.xs(1, level='quarter'))
      revenue
year
2019      100
2020      150

マルチレベルインデックスを使用したデータの集計

Pandasにおけるマルチレベルインデックスのもう一つの便利な機能は、インデックスの異なるレベルでデータを集計することができることです。groupby()関数を使用して、インデックスの1つまたは複数のレベルでデータをグループ化し、集計関数を適用することができます。

python
# 各年の総収益を計算する
print(df.groupby(level='year')['revenue'].sum())

# 各四半期の平均収益を計算する
print(df.groupby(level='quarter')['revenue'].mean())
year
2019    300
2020    400
Name: revenue, dtype: int64
quarter
1    125
2    225
Name: revenue, dtype: int64

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!