作者:Lemon
来源:Python数据之道
玩转 Pandas 的 Groupby 操作
大家好,我是 Lemon,今天来跟大家分享下 pandas 中 groupby 的用法。
Pandas 的 groupby()
功能很强大,用好了可以方便的解决很多问题,在数据处理以及日常工作中经常能施展拳脚。
今天,我们一起来领略下 groupby()
的魅力吧。
首先,引入相关 package :
import pandas as pd
import numpy as np
groupby 的基础操作
经常用 groupby
对 pandas 中 dataframe
的各列进行统计,包括求和、求均值等。
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