.agg()和.apply()方法在groupby()方法中怎么用

发布时间:2022-01-04 09:42:47 作者:小新
来源:亿速云 阅读:228
# .agg()和.apply()方法在groupby()方法中怎么用

在Pandas中,`groupby()`是数据分组聚合的核心方法,而`.agg()`和`.apply()`则是实现不同聚合逻辑的关键工具。本文将详细介绍它们的用法、区别及典型场景。

---

## 一、groupby()基础回顾

`groupby()`方法通过指定列名或条件对DataFrame进行分组,返回一个`GroupBy`对象:
```python
import pandas as pd
df = pd.DataFrame({
    'A': ['foo', 'bar', 'foo', 'bar'],
    'B': [1, 2, 3, 4],
    'C': [10, 20, 30, 40]
})
grouped = df.groupby('A')  # 按A列分组

二、.agg()方法:多维度聚合

1. 基本用法

.agg()允许对每个分组同时应用多个聚合函数

# 对B列求均值,C列求和
result = df.groupby('A').agg({
    'B': 'mean',
    'C': 'sum'
})

输出:

       B   C
A           
bar  3.0  60
foo  2.0  40

2. 多函数聚合

可对同一列应用多个函数:

result = df.groupby('A')['B'].agg(['mean', 'max', 'count'])

3. 自定义聚合函数

支持lambda或预定义函数:

df.groupby('A').agg({
    'B': lambda x: max(x) - min(x)
})

适用场景


三、.apply()方法:灵活处理分组

1. 基本用法

.apply()会对每个分组整体应用函数:

# 计算每个分组的极差
def range_calc(group):
    return group.max() - group.min()

df.groupby('A').apply(range_calc)

2. 返回多行数据

.agg()不同,.apply()可以返回多行:

def top_n(group, n=1):
    return group.nlargest(n, 'B')

df.groupby('A').apply(top_n, n=1)

3. 访问分组键

通过group.name获取当前分组的键值:

def add_group_name(group):
    group['Group'] = group.name
    return group

df.groupby('A').apply(add_group_name)

适用场景


四、核心区别对比

特性 .agg() .apply()
输入 单列或多列的Series 整个分组的DataFrame/Series
输出结构 自动对齐为规整表格 依赖函数返回值
性能 更高(内部优化) 较低(逐组处理)
典型用途 快速统计聚合 复杂业务逻辑处理

五、实战建议

  1. 优先考虑.agg():当需求能用sum/mean等内置函数实现时
  2. 慎用.apply():在10万行以上数据时可能性能较差
  3. 混合使用:复杂场景可组合使用
# 先聚合再处理
df.groupby('A').agg({'B':'sum'}).apply(lambda x: x*100)

掌握这两种方法的分工与配合,能够高效解决90%以上的分组聚合需求。根据具体场景选择合适工具,是提升Pandas代码质量的关键。 “`

推荐阅读:
  1. throws怎么在java中使用
  2. 怎么在java中清理finalize

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

groupby()

上一篇:opencv怎么实现卡尔曼滤波

下一篇:JS的script标签属性有哪些

相关阅读

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

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