Pandas笔记---深入Groupby,它的功能没有你想的这么简单

本文详细介绍了Pandas中Groupby操作的split-apply-combine思想,重点讨论了Aggregation、Transformation和Filteration。通过实例展示了如何计算每个用户点击广告的统计信息,如最大、最小广告ID。transform方法用于返回与原始数据表大小相同的新对象,而filter则通过布尔判断筛选分组内容。此外,对比了agg和apply方法在性能上的差异,强调了apply的灵活性和高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方“潜心的Python小屋”关注我们,第一时间推送优质文章。

前言

大家好,我是潜心。上篇文章提到了Groupby,但其中举例的代码有点问题,在提取序列时用到了for循环,效率很慢,后来查找了官方文档,才明白apply的重要性,再次对Groupby进行深入并总结。

本文约2.1k字,预计阅读15分钟。

Groupby: split-apply-combine

Pandas中Groupby定义如下:

def groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False)

Groupby具体来说指的是涉及以下一个或多个步骤的过程:

  • 分割(Splitting):根据一些标准将数据划分为多个组。

  • 应用(Applying):独立地对每个组应用一个函数。

  • 组合(Combing):将结果组合成数据结构。

其中,分割是最直接的,也是最常用的(如上图)。但是事实上,在许多情况下,我们可能希望将数据集分成组,并对这些组做一些统计值计算。在Applying中,可能希望做以下其中一项:

  • 聚集(Aggregation):计算每个组的汇总统计信息(或统计信息),例如计算分组的和、均值、个数等。

  • 转换(Transformation):执行一些特定组的计算并返回一个like-indexed对象。

  • 过滤(Filteration):根据判断为真或假的组计算,丢弃一些组。

此次我们不讨论Group的分割问题,主要聚焦它的Applying,并结合实际的大数据量的实际表来比较它们的效率问题。采用的数据表为用户与他点击的广告,共100w条:


user_id creative_id
0 30920 567330
1 30920 3072255
2 30920 3072255
3 30920 3879497
4 30920 3751623
... ... ...

Aggregation

当创建了GroupBy对象,根据需求我们可以对分组的数据执行计算。最简单的是我们通过agg()方法来调用一些Python内置函数进行聚合计算,常用的内置函数为:meanmediansumsizecountstddescribeminmax等。

这里我们基于user_id对数据进行划分,简单应用部分内置函数,统计对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值