Python-Pandas GroupBy 进阶与透视表学习

​一、数据分组(GroupBy)​

​核心概念​​:将数据按指定字段分组,对每组进行聚合、转换或过滤操作。

​1. 分组聚合(Aggregation)​

将分组数据聚合成单个值(如平均值、总和)。

  • ​单变量分组聚合​​:

    import pandas as pd  
    df = pd.read_csv('data/gapminder.tsv', sep='\t')  
    # 按年份分组计算平均寿命  
    result = df.groupby('year')['lifeExp'].mean()
  • ​Pandas内置聚合方法​​:

    • count(), mean(), std(), median(), sum(), min(), max()等。

    • 示例:

      df.groupby('continent')['lifeExp'].describe()  # 同时计算多个统计量
  • ​自定义聚合函数​​:

    def my_mean(values):  return sum(values) / len(values)  
    # 使用agg调用自定义函数  
    df.groupby('year')['lifeExp'].agg(my_mean)
  • ​多函数聚合​​:

    result = df.groupby('year')['lifeExp'].agg(['count', 'mean', 'std'])  
    # 重命名结果列  
    result.columns = ['count_nonzero', 'mean', 'std']
  • ​多列不同聚合操作​​:

    df.groupby('year').agg({  'lifeExp': 'mean',  'pop': 'median',  'gdpPercap': 'median'  
    }).rename(columns={  'lifeExp': '平均寿命',  'pop': '人口',  'gdpPercap': '人均Gdp'  
    }).reset_index()

​2. 分组转换(Transformation)​

保持数据维度不变,对每组进行转换(如标准化、填充缺失值)。

  • ​计算Z分数​​:

    def my_zscore(x):  return (x - x.mean()) / x.std()  
    df['z_score'] = df.groupby('year')['lifeExp'].transform(my_zscore)
  • ​分组填充缺失值​​:

    tips = pd.read_csv('data/tips.csv').sample(10, random_state=42)  
    tips.loc[np.random.permutation(tips.index)[:4], 'total_bill'] = np.NaN  # 构造缺失值  def fill_na_mean(x):  return x.fillna(x.mean())  # 用组内均值填充缺失值  tips['fill_total_bill'] = tips.groupby('sex')['total_bill'].transform(fill_na_mean)

​3. 分组过滤(Filtration)​

根据条件筛选分组(如删除组内数据量不足的分组)。

# 过滤组内数据量>30的分组  
tips_filtered = tips.groupby('size').filter(lambda x: len(x) > 30)  
tips_filtered['size'].value_counts()

​4. DataFrameGroupBy对象操作​

分组后返回DataFrameGroupBy对象,支持进一步操作。

  • ​查看分组​​:

    grouped = tips.groupby('sex')  
    grouped.groups  # 显示分组索引  
    female_group = grouped.get_group('Female')  # 提取特定组
  • ​遍历分组​​:

    for name, group in grouped:  print(f"Group: {name}")  print(group.head())
  • ​多字段分组​​:

    group_avg = tips.groupby(['sex', 'time']).mean()  # 返回MultiIndex  
    group_avg.reset_index()  # 转换为普通DataFrame  
    # 或分组时禁用索引  
    tips.groupby(['sex', 'time'], as_index=False).mean()

​二、数据透视表(Pivot Table)​

动态重组数据,按行列维度聚合分析。

​核心参数​

参数

作用

示例

index

行分组字段

index='continent'

columns

列分组字段

columns='year'

values

待聚合的数值列

values='lifeExp'

aggfunc

聚合函数(默认mean

aggfunc=['mean', 'std']

​基础用法​
# 按大洲和年份透视平均寿命  
pivot = pd.pivot_table(  df,  index='continent',  columns='year',  values='lifeExp',  aggfunc='mean'  
)
​多维度聚合​
# 同时计算均值和标准差  
pivot_multi = pd.pivot_table(  df,  index='continent',  columns='year',  values='lifeExp',  aggfunc=['mean', 'std']  
)

​三、关键区别总结​

​操作​

​输入​

​输出​

​特点​

​聚合(Agg)​

每组数据

​单个值​​(如均值)

数据维度降低

​转换(Transform)​

每组数据

​同维度数据​​(如Z分数)

维度不变,支持向量化操作

​过滤(Filter)​

整组数据

​筛选后的组​​(如删除小组)

按组条件筛选

​透视表​

全表数据

​重组后的聚合表​

动态行列分析,支持多级分组


​四、最佳实践​
  1. ​分组前预处理​​:确保分组字段无缺失值。

  2. ​优先内置函数​​:如mean()比自定义循环高效。

  3. ​透视表替代多重分组​​:简化多维度聚合代码。

  4. ​利用reset_index()​:将分组索引转换为列便于后续分析。

示例代码需结合实际数据文件运行,建议在Jupyter Notebook中逐步练习以加深理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919882.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MQTT 核心概念与协议演进全景解读(二)

MQTT 在物联网中的应用实例智能家居中的设备联动在智能家居系统里,MQTT 协议扮演着至关重要的角色,是实现设备间高效通信与智能联动的核心枢纽。以常见的智能家居场景为例,当清晨的阳光缓缓升起,光线传感器检测到光照强度的变化&a…

燧原科技招大模型训练算法工程师

高级大模型训练算法工程师(岗位信息已经经过jobleap.cn授权,可在csdn发布)燧原科技 上海职位描述负责大模型在AI芯片预训练和微调等研发和客户支持工作; 参与大模型训练精度分析和性能调优;职位要求985/211大学计算机…

基于Java虚拟线程的高并发作业执行框架设计与性能优化实践指南

基于Java虚拟线程的高并发作业执行框架设计与性能优化实践指南 一、技术背景与应用场景 在分布式系统和微服务架构中,后端常需承载海量异步作业(如批量数据处理、定时任务、异步消息消费等),对作业执行框架提出了高并发、高吞吐、…

了解 PostgreSQL 的 MVCC 可见性基本检查规则

1. 引言 根据 Vadim Mikheev 的说法,PostgreSQL 的多版本并发控制(MVCC)是一种“在多用户环境中提高数据库性能的高级技术”。该技术要求系统中存在同一数据元组的多个“版本”,这些版本由不同时间段内获取的快照进行管理。换句话…

普通烘箱 vs 铠德科技防静电烘箱:深度对比与选择指南

在电子制造、化工、航空航天等精密工业领域,烘箱作为关键工艺设备,其性能直接关系到产品可靠性和生产安全。普通烘箱与防静电烘箱的核心差异在于静电防护能力,而铠德科技作为防静电烘箱领域的专业厂商,其产品通过技术创新重新定义…

达梦数据库巡检常用SQL(一)

达梦数据库巡检常用SQL(一) 数据库基本信息 数据库用户信息 数据库对象检查 数据库基本信息 检查授权信息: SELECT /*+DMDB_CHECK_FLAG*/ LIC_VERSION AS "许可证版本" ,SERIES_NO AS "序列号" ,CHECK_CODE AS "校验码" …

TypeScript的接口 (Interfaces)讲解

把接口(Interface)想成一份“说明书”或“合同书”。说明书 比如电饭煲的说明书告诉你: 必须有“煮饭”按钮必须有“保温”功能颜色可以是白、黑、红 接口在 TypeScript 里干的就是同样的事:它规定一个对象“长什么样”。 interfa…

Python本源诗话(我DeepSeek)

物理折行新注释,直抒胸臆吾志名。 笔记模板由python脚本于2025-08-23 13:14:28创建,本篇笔记适合喜欢python和诗的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Python官网…

博士招生 | 美国圣地亚哥州立大学 Yifan Zhang 课题组博士招生,AI 安全领域顶尖平台等你加入!

内容源自“图灵学术博研社”gongzhonghao学校简介圣地亚哥州立大学(San Diego State University, SDSU)是美国加州南部久负盛名的公立研究型大学。学校坐落于科技产业高度活跃的南加州地区,与本地软件、电信、生物科技、国防及清洁能源等领域…

Day22: Python涡轮增压计划:用C扩展榨干最后一丝性能!

目录🔥 第一章:初识外挂 - ctypes初体验1.1 C语言涡轮引擎1.2 Python调用秘籍⚡ 第二章:Cython核弹级加速2.1 给Python穿上防弹衣2.2 编译倒计时2.3 起飞测试🏎️ 第三章:终极速度对决3.1 赛前准备3.2 比赛结果&#x…

如何修复“DNS服务器未响应”错误

“DNS服务器未响应”是一种常见的网络错误,当设备无法与域名系统(DNS)服务器通信以将域名转换为IP地址时,就会出现这种错误。DNS服务器的作用是将域名转换为IP地址(例如,将www.example.com转换为192.168.1.…

数据结构与算法-算法-三数之和

题目: 15. 三数之和 - 力扣(LeetCode)15. 三数之和 - 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所…

ASCOMP PDF Conversa:高效精准的PDF转换工具

在日常工作和学习中,PDF文件因其格式稳定、兼容性强而被广泛使用。然而,PDF文件的编辑性较差,常常需要将其转换为可编辑的格式,如Word文档。ASCOMP PDF Conversa作为一款功能强大的PDF转换工具,能够将PDF文件转换成可编…

JAVA核心基础篇-集合

想要了解集合,首先要知道一个东西,叫数据结构。所谓数据结构,其实就是计算机存储,组织数据的方式。常用的数据结构有8大类数组,链表,树,堆,栈,队列,哈希表&am…

大模型——深度评测智能体平台Coze Studio

深度评测智能体平台Coze Studio 7 月底字节跳动的 Coze-Studio 正式开源,算是 AI 智能体领域的一个大事件。这个月终于有时间在内网环境进行了部署和评测,希望能为团队的企业知识库和 AI 应用建设提供多一个选项。 其实,我们厂的知识库系统一直是自研的。没有直接采用市面…

UE5打包,LoadObject加载不出网格|动画

由于笔者UE5加载模型和动画使用的动态加载(LoadObject),而这些资源(XX001、XX002 等)没有被任何关卡或蓝图直接引用,在编辑器状态下是可以正常加载的,但它们在打包时被当作“无用”资源而排除了…

C 语言标准输入输出头文件stdio.h及其常见用法

在这篇文章中,我们来详细聊一聊 C 语言标准输入输出头文件 stdio.h 及其常见用法。1. stdio.h 是什么 stdio.h(Standard Input and Output Header)是 C 标准库中的一个头文件,提供了处理标准输入输出和一些文件操作的函数声明。 它…

Js逆向 拼夕夕anti_content

前言 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经…

大模型时代为什么需要向量数据库?

这里写自定义目录标题1. 向量数据库2. 向量嵌入3. 特征和向量4. 相似性测量4.1 欧几里得距离4.2 余弦相似度5. 相似性搜索5.1 K-Means5.2 基于文本嵌入进行意图匹配6. 问答助手7. 意图匹配1. 向量数据库 向量数据库(Vector Database),也叫矢…

【Canvas与旗帜】二十角金盘德国旗

【成图】【代码】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>多角金盘德国旗 Draft1</title><style type"text/css&qu…