Python pandasでデータをグループ化、集計する方法

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の基礎学習には下記のようなサイトの利用が有効です。

click.linksynergy.com

click.linksynergy.com