Pythonのpandasライブラリは、データ分析で広く使用されています。データを扱う際に、しばしばデータをグループ化する必要があります。この記事では、Python pandasを使用してデータをグループ化する方法を紹介します。
想定するデータ
例えば、以下のようなCSVファイル「sales.csv」があるとします。
region,year,sales East,2018,300 East,2018,250 East,2018,350 North,2018,200 North,2018,160 North,2018,180 South,2018,250 South,2018,200 South,2018,150 West,2018,270 West,2018,230 West,2018,250 East,2019,200 East,2019,250 East,2019,300 North,2019,220 North,2019,165 North,2019,180 South,2019,280 South,2019,240 South,2019,200 West,2019,310 West,2019,240 West,2019,200
このデータには、4つの列があります。"region"列には、売上の地域が含まれます。"year"列には、売上の年が含まれます。"sales"列には、その地域・年の売上が含まれます。このデータを使って、先ほどのコード例を実行することができます。
データの読み込み
まず、pandasをインポートして、データを読み込みます。この例では、"sales.csv"ファイルからデータを読み込みます。
import pandas as pd df = pd.read_csv("sales.csv")
データのグループ化
次に、データをグループ化します。データをグループ化するには、groupby()
関数を使用します。この関数は、グループ化したい列を指定して呼び出します。
例えば、次のコードは、"region"列でデータをグループ化します。
grouped = df.groupby('region')
グループ化されたデータの確認
グループ化されたデータを確認するには、groups
属性を使用します。この属性は、各グループに対応する行のインデックスを示す辞書を返します。
print(grouped.groups)
出力:
{'East': [0, 1, 2], 'North': [3, 4, 5], 'South': [6, 7, 8], 'West': [9, 10, 11]}
グループごとのデータの集計
グループ化されたデータを集計するには、agg()
関数を使用します。この関数は、グループごとに異なる集計関数を適用できます。
例えば、次のコードは、"region"ごとに"sales"列の平均値を計算します。
avg_sales = grouped['sales'].agg('mean') print(avg_sales)
出力:
region East 245.333333 North 155.666667 South 220.000000 West 230.333333 Name: sales, dtype: float64
複数の列でグループ化する
複数の列でグループ化する場合は、groupby()
関数にグループ化したい列のリストを渡します。
例えば、次のコードは、"region"と"year"の2つの列でデータをグループ化します。
grouped = df.groupby(['region', 'year'])
複数の集計関数を使用する
複数の集計関数を使用するには、agg()
関数に適用したい関数のリストを渡します。
例えば、次のコードは、"region"ごとに"sales"列の平均値と最大値を計算します。
result = grouped['sales'].agg(['mean', 'max']) print(result)
出力:
mean max region year East 2018 270 350 2019 220 300 North 2018 160 200 2019 165 220 South 2018 200 250 2019 240 280 West 2018 230 270 2019 240 310
まとめ
Python pandasを使用して、データをグループ化する方法を紹介しました。groupby()
関数を使用することで、簡単にデータをグループ化し、agg()
関数を使用することで、グループごとに異なる集計関数を適用できます。これらの機能を使うことで、データ分析の効率を大幅に向上させることができます。これらのプログラムはPythonの基本的な文法とライブラリで実装することができます。Pythonの基礎学習には下記のようなサイトの利用が有効です。