分组过程如下图所示:
import numpy as np
import pandas as pd
df=pd.DataFrame({'key1':list('aabbab'),
'key2':list('cccddd'),
'value1':np.arange(1,7),
'value2':np.arange(7,13)})
df
key1 key2 value1 value2
0 a c 1 7
1 a c 2 8
2 b c 3 9
3 b d 4 10
4 a d 5 11
5 b d 6 12
### 用key1分组后创建了一个GroupBy对象,后面函数的任何操作都是基于这个对象的,这一步没有进行运算。
df['value1'].groupby(df['key1']
<pandas.core.groupby.groupby.SeriesGroupBy object at 0x0000000008D74F60>
group=df['value1'].groupby(df['key1'])
group.mean() ### 分组后求平均
key1
a 2.666667
b 4.333333
group.max() ### 分组后求最大值
key1
a 5
b 6
group.min() ### 分组后求最小值
key1
a 1
b 3
group.sum() ### 分组后求和
key1
a 8
b 13
group.count() ### 分组后计数
key1
a 3
b 3
df[['value1','value2']].groupby(df['key1']).mean()
value1 value2
key1
a 2.666667 8.666667
b 4.333333 10.333333
### 分组迭代
for name, group in df.groupby('key1'):
print(name)
print(group)
a
key1 key2 value1 value2
0 a c 1 7
1 a c 2 8
4 a d 5 11
b
key1 key2 value1 value2
2 b c 3 9
3 b d 4 10
5 b d 6 12