百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Python 之 Pandas:数据分组聚合统计的魔法秘籍

ztj100 2025-06-04 08:55 14 浏览 0 评论

在数据的浩瀚海洋中,如何精准地挖掘出有价值的信息,成为众多数据爱好者和从业者面临的挑战。今天,我们就来揭开 Python 中 Pandas 库强大的分组与聚合统计功能的神秘面纱,看看它是如何帮助我们在数据的海洋里 “捞金” 的。

统计函数:一 “函” 打尽多样数据洞察

当我们将 DataFrame 数据按照特定的类别分组后,各种统计函数就如同 “得力助手”,纷纷登场。以计算各组平均数为例,grouped.mean()这一简单的代码,却有着大能量。假设我们在分析一个团队在不同季度(Q1 - Q4)的得分情况,它能瞬间帮我们算出每个团队在各个季度的平均表现,让我们对团队整体水平有清晰认知。

不仅如此,Pandas 还为我们准备了丰富的统计方法 “武器库”。

df.groupby('team').describe(),它就像一个数据 “管家”,会详细地给出计数、均值、标准差等描述性统计信息,让数据的全貌无所遁形。

而df.groupby('team').sum()则擅长数值型数据的累加,在统计销售总额等场景中大放异彩。

df.groupby('team').count()能精准计算数量,把缺失值巧妙地排除在外。

想要找出最大值和最小值?df.groupby('team').max() 和 df.groupby('team').min() 轻松搞定。

df.groupby('team').size()与 count () 有些相似,但它更关注组的大小,让我们对数据的分布结构一目了然。

df.groupby('team').median()能快速找到中位数,在了解数据的集中趋势时作用非凡。

还有计算标准差和方差的df.groupby('team').std() 与 df.groupby('team').var(),以及计算相关系数矩阵,帮助我们理解变量间线性关系的grouped.corr() ,评估样本均值精度的grouped.sem() ,甚至还有计算乘积的grouped.prod() (虽然使用频率相对较低,但在特定需求下也能派上大用场),计算累计最大值和累加的grouped.cummax() 和 grouped.cumsum(),以及计算平均绝对偏差,衡量数据分布离散程度的grouped.mad() 。

如此丰富多样的统计函数,是不是让你感受到了 Pandas 的强大?

聚合方法 agg ():灵活定制你的数据需求

如果说前面的统计函数是一个个 “精兵强将”,那么agg()方法就是一位 “战略指挥官”,赋予我们高度的灵活性,对不同的列应用不同的统计方法。

所有列使用一个计算方法

df.groupby('team').aggregate(sum) ,这行代码能让所有列都按照求和的方式进行聚合,就像一声令下,所有士兵朝着同一个目标前进,快速得到每组数据所有列的总和。

每个字段使用多个计算方法

当我们想从多个角度分析某些字段时,grouped[['Q1','Q3']].agg([np.sum, np.mean, np.std]) 就能大显身手。它可以同时对 Q1 和 Q3 这两个字段,分别计算总和、均值和标准差,为我们提供更全面的数据洞察。

不同列使用不同计算方法

更厉害的是,df.groupby('team').agg({'Q1':['min','max'],'Q2':'sum'}) 能让我们针对不同的列制定不同的 “作战计划”。比如对 Q1 列找出最小值和最大值,而对 Q2 列进行求和操作,满足我们多样化的分析需求。

使用自定义函数

在实际的数据处理中,有时现有的函数无法满足我们复杂的需求,这时候自定义函数就闪亮登场了。比如定义一个计算最大值与最小值差值的函数def max_min(x): return x.max()- x.min() ,然后通过df.groupby('team').Q1.agg(Mean='mean', Sum='sum', Diff=lambda x: x.max()- x.min(), Max_min=max_min) ,我们可以在对 Q1 列进行聚合时,不仅计算均值、总和,还能得到自定义的差值结果,让数据分析更贴合我们的实际业务场景。

时序重采样方法 resample ():时间序列数据的 “调音师”

对于时间序列数据,resample()方法就像是一位专业的 “调音师”,能按指定周期聚合统计,完美解决时间序列数据的频率转换问题。假设我们有一个从 2020 年 1 月 1 日开始,共 100 个时间点,频率为每分钟('T')的时间序列数据idx = pd.date_range('1/1/2020', periods=100, freq='T') ,并构建了相应的 DataFrame df2 = pd.DataFrame(data={'a':[0, 1]*50,'b':1}, index=idx) 。如果我们想每 20 分钟聚合一次数据,df2.groupby('a').resample('20T').sum() 这行代码就能轻松实现。它会将数据按照 a 列的值分组,然后对每组数据按 20 分钟的周期进行求和操作,让时间序列数据在不同频率下展现出不同的规律。

组内头尾值:探寻数据的 “起点” 与 “终点”

在数据分析中,有时我们会关注某个团队最早或最晚的表现,这时候获取组内的第一个或最后一个值就显得尤为重要。df.groupby('team').first() 能精准获取每组的第一个值,就像找到故事的开头;而df.groupby('team').last() 则能获取每组的最后一个值,如同看到故事的结局。通过这两个方法,我们可以从时间维度的两端,了解数据的起始和最终状态,为分析提供独特的视角。

组内分位数:数据分布的 “分割线”

分位数,特别是中位数(二分位数),在数据分析中占据着重要地位。Pandas 中的quantile()方法就像是一把精准的 “手术刀”,能方便地计算任何所需的分位数。df.groupby('team').median() 或者 df.groupby('team').quantile(0.5) 都可以计算出二分位数,也就是中位数。它能将数据分成两部分,让我们了解数据的中间水平,从而更好地把握数据的整体分布情况。

组内差值:洞察数据趋势变化的 “显微镜”

想要分析数据的趋势变化,组内前后数据的差值计算必不可少。grouped.diff() 就像一台 “显微镜”,能帮助我们清晰地看到组内数据的变化情况。通过计算相邻数据的差值,我们可以发现数据是在上升、下降还是保持平稳,为预测数据趋势提供有力依据。

Pandas 中的这些分组与聚合统计功能,为我们在数据分析的道路上提供了强大的工具。无论是处理销售数据、实验数据,还是时间序列数据,掌握这些知识和技术,都能让我们在数据的海洋中乘风破浪,高效地挖掘出有价值的信息,做出更明智的决策。你在使用 Pandas 进行数据处理时,有没有遇到过什么有趣的问题或者有独特的使用技巧呢?快来评论区分享吧!

#数据分析师#

相关推荐

这个 JavaScript Api 已被废弃!请慎用!

在开发过程中,我们可能会不自觉地使用一些已经被标记为废弃的JavaScriptAPI。这些...

JavaScript中10个“过时”的API,你的代码里还在用吗?

JavaScript作为一门不断发展的语言,其API也在持续进化。新的、更安全、更高效的API不断涌现,而一些旧的API则因为各种原因(如安全问题、性能瓶颈、设计缺陷或有了更好的替代品)被标记为“废...

几大开源免费的 JavaScript 富文本编辑器测评

MarkDown编辑器用的时间长了,发现发现富文本编辑器用起来是真的舒服。...

比较好的网页里面的 html 编辑器 推荐

如果您正在寻找嵌入到网页中的HTML编辑器,以便用户可以直接在网页上编辑HTML内容,以下是几个备受推荐的:CKEditor:CKEditor是一个功能强大的、开源的富文本编辑器,可以嵌入到...

Luckysheet 实现excel多人在线协同编辑

前言前些天看到Luckysheet支持协同编辑Excel,正符合我们协同项目的一部分,故而想进一步完善协同文章,但是遇到了一下困难,特此做声明哈,若侵权,请联系我删除文章!若侵犯版权、个人隐私,请联系...

从 Element UI 源码的构建流程来看前端 UI 库设计

作者:前端森林转发链接:https://mp.weixin.qq.com/s/ziDMLDJcvx07aM6xoEyWHQ引言...

手把手教你如何用 Decorator 装饰你的 Typescript?「实践」

作者:Nealyang转发连接:https://mp.weixin.qq.com/s/PFgc8xD7gT40-9qXNTpk7A...

推荐五个优秀的富文本编辑器

富文本编辑器是一种可嵌入浏览器网页中,所见即所得的文本编辑器。对于许多从事前端开发的小伙伴来说并不算陌生,它的应用场景非常广泛,平时发个评论、写篇博客文章等都能见到它的身影。...

基于vue + element的后台管理系统解决方案

作者:林鑫转发链接:https://github.com/lin-xin前言该方案作为一套多功能的后台框架模板,适用于绝大部分的后台管理系统(WebManagementSystem)开发。基于v...

开源富文本编辑器Quill 2.0重磅发布

开源富文本编辑器Quill正式发布2.0版本。官方TypeScript声明...

Python之Web开发框架学习 Django-表单处理

在Django中创建表单实际上类似于创建模型。同样,我们只需要从Django类继承,则类属性将是表单字段。让我们在myapp文件夹中添加一个forms.py文件以包含我们的应用程序表单。我们将创建一个...

Django测试入门:打造坚实代码基础的钥匙

这一篇说一下django框架的自动化测试,...

Django ORM vs SQLAlchemy:到底谁更香?从入门到上头的选择指南

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。...

超详细的Django 框架介绍,它来了!

时光荏苒,一晃小编的Tornado框架系列也结束了。这个框架虽然没有之前的FastAPI高流量,但是,它也是小编的心血呀。总共16篇博文,从入门到进阶,包含了框架的方方面面。虽然小编有些方面介绍得不是...

20《Nginx 入门教程》使用 Nginx 部署 Python 项目

今天的目标是完成一个PythonWeb项目的线上部署,我们使用最新的Django项目搭建一个简易的Web工程,然后基于Nginx服务部署该PythonWeb项目。1.前期准备...

取消回复欢迎 发表评论: