pandasのDataFrameのgroupby()メソッドは、データフレームを特定の列の値でグループ化する機能です。これにより、データフレームを特定の列の値で分割し、それぞれのグループに対して関数を適用することができます。
例えば、以下のデータフレームを用いて説明します。
import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C': [1, 5, 5, 2, 5, 3, 6, 4],
'D': [2.0, 5., 8., 1., 2., 9., 4., 3.]})
print(df)
A B C D
0 foo one 1 2.0
1 bar one 5 5.0
2 foo two 5 8.0
3 bar three 2 1.0
4 foo two 5 2.0
5 bar two 3 9.0
6 foo one 6 4.0
7 foo three 4 3.0
このデータフレームを、列Aの値でグループ化するには、以下のようにします。
grouped = df.groupby('A')
これにより、列Aの値でグループ化されたデータフレームが得られます。
for name, group in grouped:
print(name)
print(group)
foo
A B C D
0 foo one 1 2.0
2 foo two 5 8.0
4 foo two 5 2.0
6 foo one 6 4.0
7 foo three 4 3.0
bar
A B C D
1 bar one 5 5.0
3 bar three 2 1.0
5 bar two 3 9.0
また、グループ化したデータフレームに関数を適用することもできます。例えば、列Cの合計を求めるには、以下のようにします。
grouped.sum()
C D
A
bar 10 10.0
foo 21 19.0