温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用pandas进行分组聚合

发布时间:2026-11-04 09:19:07 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 pandas 中,分组聚合最常用的方式是 groupby() 配合聚合函数。下面从基础到进阶给你一个清晰的使用指南。


一、基础用法:groupby + 聚合

示例数据

import pandas as pd

df = pd.DataFrame({
    '部门': ['销售', '销售', '技术', '技术', '技术'],
    '姓名': ['张三', '李四', '王五', '赵六', '钱七'],
    '工资': [8000, 9000, 12000, 11000, 13000],
    '年龄': [25, 30, 28, 35, 32]
})

二、常见聚合方式

1️⃣ 对单列聚合

df.groupby('部门')['工资'].mean()

结果:

部门
技术    12000.0
销售     8500.0

2️⃣ 对多列聚合

df.groupby('部门').agg({
    '工资': 'mean',
    '年龄': 'max'
})

3️⃣ 多个聚合函数

df.groupby('部门')['工资'].agg(['mean', 'sum', 'count'])

三、多字段分组

df.groupby(['部门', '年龄'])['工资'].sum()

四、重置索引(常用)

groupby 后默认是 Index:

df.groupby('部门')['工资'].sum().reset_index()

五、自定义聚合函数

def salary_range(x):
    return x.max() - x.min()

df.groupby('部门')['工资'].agg(salary_range)

六、对分组结果重命名

df.groupby('部门').agg(
    平均工资=('工资', 'mean'),
    最高工资=('工资', 'max')
)

七、分组后过滤(filter)

df.groupby('部门').filter(lambda x: x['工资'].mean() > 10000)

八、常见坑提醒 ⚠️

  • groupby 默认 不修改原 DataFrame
  • 数值列才会参与 sum / mean
  • 多索引结果可用 .reset_index() 转回普通表

如果你有 具体业务场景(如时间序列、透视表、性能优化),我可以给你更针对性的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手