Pandas groupby() 核心用法与多索引处理详解

苏见山
苏见山
发布时间:2026-10-11| 4人浏览过
原创

本文详解 Pandas 中 groupby() 函数的核心用法,涵盖按字典或列分组、apply 与 agg 的区别、多函数聚合及可视化。重点解析多级索引(MultiIndex)的透视表形式、使用 xs() 选取特定索引以及通过 reset_index() 恢复常规 DataFrame 结构的完整操作流程。

groupby 基础分组与聚合

Pandas 的 groupby() 提供了灵活的数据分组机制,支持通过映射字典、键函数或具体的列系列进行分组。在聚合操作中,apply() 处理的是类 DataFrame 的数据表对象,而 agg() 每次仅传入一列,但支持同时传入多个聚合函数以执行复杂计算。

示例数据构建

首先,我们构建一个包含姓名(Q)、数值(A, B, C)的 DataFrame 用于演示:

import pandas as pd
df = pd.DataFrame({'Q':['LI','ZHANG','ZHANG','LI','WANG'], 'A' : [1,1,1,2,2], 'B' : [1,-1,0,1,2], 'C' : [3,4,5,6,7]})

apply 与 agg 的区别

apply() 将分组后的子 DataFrame 作为整体传入 lambda 函数。例如,打印每个分组的完整数据:

df.groupby('Q').apply(lambda x:print(x))

相比之下,agg() 针对单列进行聚合计算,但允许指定多个统计函数:

df.groupby('Q').agg(['mean','std','count','max'])

可视化与多级索引处理

groupby 聚合后的结果可以直接调用 plot() 进行可视化,例如绘制条形图:

%matplotlib inline
df.groupby('Q').agg(['mean','std','count','max']).plot(kind='bar')

当使用两个或更多列进行分组时(如 ['Q','A']),结果将呈现为透视表形式,其本质是一个带有 MultiIndex 的 DataFrame。这种结构在数据选取时需要特殊处理。

多级索引(MultiIndex)操作

创建多级索引 DataFrame 并查看结果:

Muldf = df.groupby(['Q','A']).agg('mean')
print(Muldf)

要选取特定索引层级的数据,可使用 xs() 函数。例如,选取 'Q' 层级为 'LI' 的数据:

Muldf.xs('LI')

重置索引结构

若需将 MultiIndex 恢复为常规 DataFrame 结构,可调用 reset_index()。该操作会将 MultiIndex 的元组转换为 columns,并将 index 重置为从 0 开始的整数序列:

Muldf.reset_index()

以上就是 Pandas groupby() 核心用法与多级索引处理的详细内容,更多关于 Python 数据处理与 Pandas 高级技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。