在 pandas 中,“分组聚合”通常指的是 groupby + 聚合函数 的使用。下面从基础到常见用法逐步说明。
df.groupby(分组列)[聚合列].聚合函数()
假设有数据:
import pandas as pd
df = pd.DataFrame({
'班级': ['A', 'A', 'B', 'B'],
'性别': ['男', '女', '男', '女'],
'成绩': [80, 90, 70, 85]
})
df.groupby('班级')['成绩'].mean()
结果:
班级
A 85.0
B 77.5
df.groupby(['班级', '性别'])['成绩'].mean()
df.groupby('班级').agg({
'成绩': 'mean',
'性别': 'count'
})
| 函数 | 说明 |
|---|---|
mean() |
均值 |
sum() |
求和 |
count() |
计数 |
max() |
最大值 |
min() |
最小值 |
std() |
标准差 |
median() |
中位数 |
agg 一次多个聚合df.groupby('班级')['成绩'].agg(['mean', 'max', 'min'])
def my_func(x):
return x.max() - x.min()
df.groupby('班级')['成绩'].agg(my_func)
groupby 默认返回 Series / DataFrame(带多级索引)
df.groupby('班级')['成绩'].mean().reset_index()
df['成绩区间'] = pd.cut(df['成绩'], [0, 80, 100])
df.groupby('成绩区间')['成绩'].count()
df.groupby('班级', dropna=False)
rename 或 agg(new_name=('成绩','mean'))如果你有 具体数据或业务场景(比如销售、日志、用户行为),可以直接发出来,我可以帮你写针对性的分组聚合代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。