Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂/应用/合并

Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂/应用/合并

💡 原文中文,约16900字,阅读约需41分钟。
📝

内容提要

本文介绍了Pandas库中的GroupBy机制,强调数据分裂、应用和合并的过程。通过groupby()方法,可以对数据进行分组并应用聚合函数,如mean和count。还讨论了自定义分组和对不同列应用不同函数的技巧,以灵活满足分析需求。

🔎

延伸解读

GroupBy 核心机制:分裂-应用-合并

Pandas 的 GroupBy 功能借鉴了 R 语言中 Hadley Wickham 提出的“分裂-应用-合并”理念。分裂指根据某些标准将数据分组;应用指对每个组独立应用一个函数;合并指将各组的计算结果整合起来。这一机制是数据分析中分组统计和生成透视表的基础,理解它有助于灵活处理各类分组任务。

GroupBy 对象的创建与惰性求值

通过 Series.groupby 或 DataFrame.groupby 可以创建 GroupBy 对象。该对象并不立即进行计算,而是保存了分组所需的中间数据,如分组键。只有调用聚合方法(如 mean、size)时才会触发实际运算。这种惰性求值特性使得 GroupBy 对象可以复用,并支持迭代、转换为列表或字典等操作。

灵活的分组方式:从内置到自定义

groupby() 支持多种分组依据:可以按列名、列名列表、字典、函数或索引层级进行分组。例如,传入字典可以按列映射分组,传入函数可以按索引长度分组,使用 level 参数可以按 MultiIndex 的层级分组。这些方式让用户能根据实际数据结构和分析需求灵活定义分组规则。

聚合操作:内置函数与自定义函数

GroupBy 对象支持丰富的内置聚合函数,如 count、mean、min、max、sum、describe 等。若内置函数不满足需求,可以通过 agg() 方法传入自定义函数,甚至使用字典对不同列应用不同的聚合函数。这为复杂的数据汇总提供了高度灵活性,例如同时计算某列的均值和最大值,另一列的总和。

❓

Q&A

Pandas中的GroupBy机制是什么?

GroupBy机制包括数据分裂、应用和合并的过程,通常用于对数据集进行分组并计算统计信息。

如何使用groupby()方法进行数据分组?

可以通过Series.groupby或DataFrame.groupby方法,传入分组依据的参数进行数据分组。

在GroupBy中可以使用哪些聚合函数?

常用的聚合函数包括count、mean、min、max等,可以对分组后的数据进行计算。

如何对不同列应用不同的聚合函数?

可以使用字典将不同的聚合函数映射到不同的列,例如{'data1':'mean', 'data2':'sum'}。

GroupBy对象支持哪些分组方式?

GroupBy对象支持按类型、列或自定义键进行分组,灵活满足分析需求。

如何自定义聚合函数并应用于GroupBy?

可以定义一个自定义函数,并通过GroupBy.agg()方法将其应用于分组数据。

🏷️

标签

➡️

继续阅读