概要
今回は特定のカラムでデータを集約する方法について紹介します。 データを集約することで特定のカラムのデータごとの最大値や平均値などをお求めることができます。 データの集約を行うにはgroupby()
を利用します。
- 特定カラムの平均:groupby(列名1).mean()
- 特定カラムの総和:groupby(列名1).sum(列名1)
- 特定カラムの最大値:groupby(列名1).max(列名1)
- 特定カラムの最小値:groupby(列名1).min(列名1)
1つのカラムで集約
1つのカラムで集約する場合はgroupby()
の引数にカラム名
を渡します。以下の例では、sex
ごとの平均値を表示しています。
df = pd.DataFrame({
'id': [1, 2, 3, 4, 5],
'name': ['taro', 'takuya', 'erika', 'hanako', 'jiro'],
'age': [20, 25, 18, 25, 25],
'sex': ['male', 'male', 'female', 'female', 'male'],
'height': [170, 180, 160, 165, 190]
})
df.groupby('sex').mean()
id age height
sex
female 3.500000 21.500000 162.5
male 2.666667 23.333333 180.0
複数のカラムで集約
複数のカラムで集約する場合はgroupby()
の引数にリスト型でカラム名をしていします。以下の例ではsexとage
で集約した平均を表示しています。
df.groupby(['sex', 'age']).mean()
id height
sex age
female 18 3 160
25 4 165
male 20 1 170
25 2 180
一括で複数の算出を行う
以下の例では,sexとage
で集約したデータのheight
の件数、最大値、最小値、合計値、平均値を一括で取得しています。
df.groupby(['sex', 'age']).agg(['count','max', 'min', 'sum', 'mean'])['height']
count max min sum mean
sex age
female 18 1 160 160 160 160
25 1 165 165 165 165
male 20 1 170 170 170 170
25 2 190 180 370 185
まとめ
groupby()
を利用することでデータを集約して、最大値や平均値を求めることができました。色々な指定方法を試して、データの抽出方法に慣れていきましょう。