分组聚合是数据处理中常见的场景,在pandas中用groupby方法实现分组操作,用agg方法实现聚合操作。
环境
- python3.9
- win10 64bit
- pandas==1.2.1
groupby
方法是pandas中的分组方法,对数据框采用groupby
方法后,返回的是DataFrameGroupBy
对象,一般分组操作后会进行聚合操作。
分组
import pandas as pd
import numpy as np
pd.set_option('display.notebook_repr_html',False)
# 数据准备
df = pd.DataFrame({
'A': [1, 1, 2, 2],'B': [1, 2, 3, 4],'C':[6,8,1,9]})
df
A B C
0 1 1 6
1 1 2 8
2 2 3 1
3 2 4 9
对数据框按A
列进行分组,产生分组数据框。分组数据框是可迭代对象,可以进行循环遍历,可以看出在循环中,每个元素的类型是元组,
元组的第一个元素是分组值,第二个元素是对应的分组数据框。
# 分组
g_df=df.groupby('A')
# 分组数据框类
type(g_df)
pandas.core.groupby.generic.DataFrameGroupBy
# 循环分组数据
for i in g_df:
print(i,type(i),end='\n\n')
(1, A B C
0 1 1 6
1 1 2 8) <class 'tuple'>
(2, A B C
2 2 3 1
3 2 4 9) <class 'tuple'>
可以对分组后的数据框直接使用聚合方法agg
,对分组数据框的每一列计算统计函数值。
# 分组求和
df.groupby('A').agg('sum')
B C
A
1 3 14
2 7 10
序列分组
可以根据数据框外的序列数据对数据框进行分组,需要注意序列长度需要与数据框行数相同。
# 定义分组列表
label=[