import pandas as pd
import numpy as np
groupby的基础操作
In [2]: df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'],
...: 'B': [2, 8, 1, 4, 3, 2, 5, 9],
...: 'C': [102, 98, 107, 104, 115, 87, 92, 123]})
...: df
...:
Out[2]:
A B C
0 a 2 102
1 b 8 98
2 a 1 107
3 c 4 104
4 a 3 115
5 c 2 87
6 b 5 92
7 c 9 123
按A列分组(groupby),获取其他列的均值
df.groupby('A').mean()
Out[3]:
B C
A
a 2.0 108.000000
b 6.5 95.000000
c 5.0 104.666667
按多列进行分组(groupby)
df.groupby(['A','B']).mean()
Out[4]:
C
A B
a 1 107
2 102
3 115
b 5 92
8 98
c 2 87
4 104
9 123
分组后选择列进行运算
分组后,可以选取单列数据,或者多个列组成的列表(list)进行运算
In [5]: df = pd.DataFrame([[1, 1, 2], [1, 2, 3], [2, 3, 4]], columns=["A", "B", "C"])
...: df
...:
Out[5]:
A B C
0 1 1 2
1 1 2 3
2 2 3 4
In [6]: g = df.groupby("A")
In [7]: g['B'].mean() # 仅选择B列
Out[7]:
A
1 1.5
2 3.0
Name: B, dtype: float64
In [8]: g[['B', 'C']].mean() # 选择B、C列
Out[8]:
B C
A
1 1.5 2.5
2 3.0 4.0
可以针对不同的列选用不同的聚合方法
In [9]: g.agg({'B':'mean', 'C':'sum'})
Out[9]:
B C
A
1 1.5 5
2 3.0 4