第 6 章:分组聚合与透视表 授课_第1页
第 6 章:分组聚合与透视表 授课_第2页
第 6 章:分组聚合与透视表 授课_第3页
第 6 章:分组聚合与透视表 授课_第4页
第 6 章:分组聚合与透视表 授课_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章:分组聚合与透视表Pandas高级数据分析实战本章内容概览核心原理:GroupBy的分治哲学理解Split-Apply-Combine核心流程实战案例:股票数据多维度分析将分治理论应用于真实金融数据场景性能对比:agg,transform,apply深度解析对比三种核心分组方法的计算效率与适用场景数据重塑:pivot_table与crosstab应用掌握透视表与交叉表的高级数据重组技巧进阶指南:常见问题与性能优化避坑指南与大规模数据处理的性能调优建议核心原理:GroupBy的分治哲学01.拆分(Split)根据键值逻辑划分数据组,利用哈希表映射索引,避免数据复制,保证高效性。02.应用(Apply)内置函数走Cython快速路径(高性能),自定义函数回退Python循环(低性能)。03.合并(Combine)将各组计算结果按原键值合并,最终生成统一的DataFrame或Series数据结构。实战案例:股票数据多维度分析业务场景与需求给定包含多只股票日行情数据的DataFrame,需计算每只股票的周收益率和周波动率。关键在于按股票代码和时间周期(周)进行多维度分组聚合。核心代码实现(Python)#1.按股票代码和周分组,取周收盘价weekly_close=df.groupby(['Symbol',pd.Grouper(key='Date',freq='W')])['Close'].last()#2.计算周收益率与波动率weekly_return=weekly_close.groupby('Symbol').pct_change()*100weekly_volatility=weekly_return.groupby('Symbol').std()分析结果预览股票代码周收益率(%)周波动率(%)AAPL2.451.89MSFT1.981.56性能对比:agg,transform,apply深度解析agg()(Aggregate)返回形状:标量/聚合结果(每组一行)适用场景:数据聚合(求和、均值、计数)性能表现:极快(Cython优化)核心特点:最常用,性能最佳支持多函数、多列聚合最佳实践:优先使用,明确指定列和函数transform()返回形状:与原数据同形(每行一个结果)适用场景:数据转换/标准化、新增列性能表现:中等核心特点:结果可直接与原数据对齐常用于组内标准化最佳实践:新增列时使用apply()返回形状:灵活多变(可返回任意形状)适用场景:复杂自定义逻辑、非向量化操作性能表现:慢(Python循环)核心特点:万能但低效适合处理复杂逻辑最佳实践:仅在agg/transform无法实现时使用数据重塑:pivot_table与crosstab应用pivot_table(数据透视表)功能:多维度数据汇总,Excel透视表的Python实现。核心参数•index/columns:行列索引•values:聚合列•aggfunc:聚合函数(sum/mean)#按地区和产品类别汇总销售额pd.pivot_table(df,index='Region',columns='Category',values='Sales',aggfunc='sum')crosstab(交叉表)功能:特殊的透视表,专门用于计算分组的频次或比例。核心参数•index/columns:行列索引•normalize:是否归一化(计算占比)#统计用户数与比例pd.crosstab(df['Region'],df['Category'])#计算比例:normalize='index'核心区别pivot_table:通用聚合工具功能强大灵活,适合各种数据汇总场景(如求和、均值)。crosstab:频次统计专家pivot_table的简化版,专门优化了频次统计与占比分析。常见问题与性能优化指南常见问题排查(Troubleshooting)忘记聚合操作仅写df.groupby('key')返回的是GroupBy对象,必须链式调用.sum()或.mean()等聚合函数。Count与Size混淆count()会排除NaN值,而size()会统计所有行(包括NaN),需根据业务场景选择。索引结构混乱聚合后若产生多级索引(MultiIndex),记得使用.reset_index()转为标准表格结构。SettingWithCopyWarning避免在分组后的视图上直接赋值,确保操作的是原始数据的副本,防止数据未正确写入。性能优化技巧(Optimization)先过滤后分组(FilterEarly)分组前用df[df['val']>0]过滤掉无关数据,减少后续计算量。转换数据类型(Category)将字符串分组键转为category类型,大幅提升速度并降低内存。禁用默认排序(sort=False)分组默认会排序,若业务无需排序,设置sort=False可显著节省时间。使用observed=True对category类型分组时,设置该参数只返回实际存在的分组,避免空组。本章总结掌握核心思想:分治哲学深刻理解GroupBy的Split-Apply-Combine分治哲学,这是所有分组操作的基石。熟练运用工具:灵活选择根据需求灵活使用agg、transform、apply,理解三者的性能差异与适用场景。数据重塑能力:多维汇总掌握pivot_table和crosstab,轻松实现数据的多维度透视与频次统计。编写高效代码:性能优化规避常见性能陷阱,掌握先过滤后分组等优化技巧,编写健壮的Pandas代码。课后实操任务:销售数据分析核心操作任务(sales_data.csv)分组聚合计算按“地区”和“产品类别”分组,统计每组的总销售额与平均利润。添加地区均值列新增一列,显示该订单所属地区的平均销售额(推荐使用transform)。构建透视表以“地区”为行,“产品类别”为列,总销售额为值,创建数据透视表。统计客户交叉分布使用交叉表(crosstab)统计各地区购买不同类别产品的客户数量。作业评判标准代码正确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论