当前位置: 首页 > article >正文

模块四-数据转换与操作——29. 透视表与交叉表

29. 透视表与交叉表1. 概述透视表Pivot Table和交叉表Crosstab是数据汇总的强大工具类似于 Excel 中的数据透视表。它们可以将数据按照行和列进行分组聚合快速生成汇总报表。importpandasaspdimportnumpyasnp# 创建示例数据np.random.seed(42)dfpd.DataFrame({日期:pd.date_range(2024-01-01,periods100,freqD),产品:np.random.choice([产品A,产品B,产品C],100),地区:np.random.choice([华东,华南,华北,西南],100),销售额:np.random.randint(1000,10000,100),销量:np.random.randint(10,200,100),销售员:np.random.choice([张三,李四,王五],100)})print(原始数据:)print(df.head())2. pivot_table() 透视表2.1 基本用法# 单行单列透视pivotpd.pivot_table(df,values销售额,index产品,columns地区,aggfuncsum)print(产品销售汇总按地区:)print(pivot)# 多聚合函数pivotpd.pivot_table(df,values销售额,index产品,columns地区,aggfunc[sum,mean])print(\n产品销售汇总求和平均:)print(pivot)2.2 多级索引# 多行索引pivotpd.pivot_table(df,values销售额,index[产品,销售员],columns地区,aggfuncsum)print(产品×销售员 销售汇总:)print(pivot)# 多列索引pivotpd.pivot_table(df,values销售额,index产品,columns[地区,销售员],aggfuncsum)print(\n地区×销售员 销售汇总:)print(pivot)2.3 多值字段# 对多个值字段进行透视pivotpd.pivot_table(df,values[销售额,销量],index产品,columns地区,aggfuncsum)print(销售额和销量汇总:)print(pivot)2.4 填充缺失值# 创建包含缺失值的透视表pivotpd.pivot_table(df,values销售额,index产品,columns地区,aggfuncsum)print(原始透视表有缺失:)print(pivot)# 填充缺失值pivot_filledpd.pivot_table(df,values销售额,index产品,columns地区,aggfuncsum,fill_value0)print(\n填充缺失值后:)print(pivot_filled)2.5 边际汇总# 添加行和列的汇总marginspivotpd.pivot_table(df,values销售额,index产品,columns地区,aggfuncsum,marginsTrue,margins_name总计)print(带边际汇总的透视表:)print(pivot)3. crosstab() 交叉表3.1 基本用法crosstab专门用于计算两个或多个分类变量的频数分布。# 单变量频数统计crosspd.crosstab(df[产品],df[地区])print(产品×地区 频数分布:)print(cross)# 添加边际汇总crosspd.crosstab(df[产品],df[地区],marginsTrue,margins_name合计)print(\n带边际汇总的交叉表:)print(cross)3.2 归一化# 按行归一化行百分比cross_rowpd.crosstab(df[产品],df[地区],normalizeindex)print(行百分比:)print(cross_row.round(2))# 按列归一化列百分比cross_colpd.crosstab(df[产品],df[地区],normalizecolumns)print(\n列百分比:)print(cross_col.round(2))# 整体归一化总百分比cross_allpd.crosstab(df[产品],df[地区],normalizeall)print(\n总百分比:)print(cross_all.round(2))3.3 聚合值# 计算销售额总和cross_aggpd.crosstab(df[产品],df[地区],valuesdf[销售额],aggfuncsum)print(销售额总和:)print(cross_agg)# 计算销售额平均值cross_aggpd.crosstab(df[产品],df[地区],valuesdf[销售额],aggfuncmean)print(\n销售额平均值:)print(cross_agg.round(0))4. pivot() 方法pivot是简单的重塑方法不进行聚合要求索引/列组合唯一。# 创建唯一组合的数据unique_dfpd.DataFrame({产品:[A,A,B,B],地区:[华东,华南,华东,华南],销售额:[1000,1500,2000,2500]})# pivot 重塑pivotedunique_df.pivot(index产品,columns地区,values销售额)print(pivot 重塑:)print(pivoted)5. pivot_table vs crosstab vs pivot方法用途聚合适用场景pivot_table数据透视✅ 支持数值汇总crosstab交叉表✅ 支持频数统计pivot简单重塑❌ 不支持数据重排6. 完整示例销售数据分析# 创建详细销售数据np.random.seed(42)salespd.DataFrame({日期:pd.date_range(2024-01-01,periods200,freqD),季度:np.repeat([Q1,Q2,Q3,Q4],50),产品:np.random.choice([产品A,产品B,产品C],200),地区:np.random.choice([华东,华南,华北,西南],200),销售额:np.random.randint(1000,10000,200),销量:np.random.randint(10,200,200),销售员:np.random.choice([张三,李四,王五,赵六],200)})print(*60)print(销售数据透视分析)print(*60)print(\n原始数据:)print(sales.head())# 1. 产品 × 地区 销售汇总print(\n1. 产品 × 地区 销售汇总:)pivot1pd.pivot_table(sales,values销售额,index产品,columns地区,aggfuncsum,fill_value0)print(pivot1)# 2. 季度 × 产品 销售趋势print(\n2. 季度 × 产品 销售趋势:)pivot2pd.pivot_table(sales,values销售额,index季度,columns产品,aggfuncsum)print(pivot2)# 3. 销售员 × 产品 业绩print(\n3. 销售员 × 产品 业绩:)pivot3pd.pivot_table(sales,values销售额,index销售员,columns产品,aggfuncsum,fill_value0)print(pivot3)# 4. 多层级分析地区 × 季度 × 产品print(\n4. 地区 × 季度 销售额:)pivot4pd.pivot_table(sales,values销售额,index地区,columns季度,aggfuncsum)print(pivot4)# 5. 交叉表产品 × 地区 销售次数print(\n5. 产品 × 地区 销售次数:)cross1pd.crosstab(sales[产品],sales[地区])print(cross1)# 6. 交叉表销售员 × 产品带百分比print(\n6. 销售员 × 产品 销售占比行百分比:)cross2pd.crosstab(sales[销售员],sales[产品],normalizeindex)print(cross2.round(2))# 7. 多维透视print(\n7. 地区 × 产品 × 季度 销售额:)pivot5pd.pivot_table(sales,values销售额,index[地区,产品],columns季度,aggfuncsum,fill_value0)print(pivot5)7. 参数详解参数说明示例values需要聚合的列values销售额index行索引index产品columns列索引columns地区aggfunc聚合函数aggfuncsum或aggfunc[sum,mean]fill_value填充缺失值fill_value0margins添加边际汇总marginsTruemargins_name边际汇总名称margins_name总计normalize归一化normalizeindex8. 总结需求推荐方法示例数值汇总透视pivot_tablepd.pivot_table(df, values销售额, index产品, columns地区, aggfuncsum)频数统计crosstabpd.crosstab(df[产品], df[地区])带边际汇总marginsTruepd.pivot_table(..., marginsTrue)填充缺失值fill_value0pd.pivot_table(..., fill_value0)多聚合函数aggfunc[sum,mean]pd.pivot_table(..., aggfunc[sum,mean])百分比normalizepd.crosstab(..., normalizeindex)简单重塑pivotdf.pivot(index产品, columns地区, values销售额)

相关文章:

模块四-数据转换与操作——29. 透视表与交叉表

29. 透视表与交叉表 1. 概述 透视表(Pivot Table)和交叉表(Crosstab)是数据汇总的强大工具,类似于 Excel 中的数据透视表。它们可以将数据按照行和列进行分组聚合,快速生成汇总报表。 import pandas as …...

Go语言轻量级HTTP代理中间件curxy:架构解析与实战应用

1. 项目概述:一个轻量级的HTTP代理中间件最近在整理个人工具箱时,发现了一个挺有意思的小项目:ryoppippi/curxy。这并非一个功能庞杂的企业级代理网关,而是一个用Go语言编写的、极其轻量级的HTTP代理中间件。它的核心定位非常清晰…...

模块四-数据转换与操作——28. 分组变换与过滤

28. 分组变换与过滤 1. 概述 除了聚合(agg)之外,groupby 还支持**变换(transform)和过滤(filter)**操作。transform 用于在组内进行元素级运算,filter 用于根据组属性筛选组。 impor…...

Godot 4视觉特效速写本:开源粒子与着色器实例库实战指南

1. 项目概述:一个为创作者准备的视觉特效“速写本”如果你是一位游戏开发者、独立创作者,或者对实时视觉特效(VFX)充满热情,那么你很可能和我一样,在寻找灵感和实现效果之间反复横跳。我们常常在社交媒体上…...

PolyWin 多融易|预测赛道的崛起:当人工智能体开始理解未来

PolyWin 多融易|预测赛道的崛起:当人工智能体开始理解未来过去十年,互联网行业经历了从移动支付、数字资产、去中心化金融到人工智能的多轮变革。每一次技术升级,都会带来新的商业模式,也会重新定义市场对于“信息、数…...

跨越语言障碍的智能方案:DeepL Chrome扩展助力无缝多语言浏览

跨越语言障碍的智能方案:DeepL Chrome扩展助力无缝多语言浏览 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 想象一下,当你浏览外文网页时…...

品牌如何通过AI搜索优化构建长期影响力?GEO战略资产打造可持续竞争壁垒

摘要品牌通过AI搜索优化(GEO)构建长期影响力与权威认知,关键在于将其从短期获客技术升级为沉淀知识、构建AI信任机制的战略资产。核心路径是持续向AI模型提供高质量、结构化的品牌知识,使其成为AI的“可信信源”,并主动…...

STM32F407 CCMRAM实战:释放LVGL图形库的RAM压力

1. 为什么需要CCMRAM优化LVGL性能 第一次用STM32F407做带屏项目时,我被RAM不足的问题折腾得够呛。当时用LVGL显示320x240的界面,刚加上第二个页面就频繁出现HardFault。用CubeMX生成的默认内存配置,128KB的RAM被各种变量瓜分后,留…...

别再只拖控件了!VisionPro ToolBlock高级脚本入门:从变量声明到自定义运行记录的完整流程

别再只拖控件了!VisionPro ToolBlock高级脚本入门:从变量声明到自定义运行记录的完整流程 在工业视觉检测领域,拖拽式图形界面曾让无数工程师快速入门,但当项目复杂度攀升时,那些隐藏在控件背后的脚本能力才是真正的效…...

Task发展历程:从简单任务运行器到现代自动化工具的完整演进史

Task发展历程:从简单任务运行器到现代自动化工具的完整演进史 【免费下载链接】task A fast, cross-platform build tool inspired by Make, designed for modern workflows. 项目地址: https://gitcode.com/gh_mirrors/ta/task Task是一个快速、跨平台的构建…...

如何3步永久保存QQ空间十年回忆:GetQzonehistory数据备份实战指南

如何3步永久保存QQ空间十年回忆:GetQzonehistory数据备份实战指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆时代,QQ空间承载了无数人的青春印记…...

2024年第二季度:10款必装的Hyper终端增强插件终极推荐

2024年第二季度:10款必装的Hyper终端增强插件终极推荐 【免费下载链接】awesome-hyper 🖥 Delightful Hyper plugins, themes, and resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-hyper Hyper终端作为一款基于Electron构建的现…...

WebToEpub:3分钟将网页小说转为专业EPUB电子书的完整指南

WebToEpub:3分钟将网页小说转为专业EPUB电子书的完整指南 【免费下载链接】WebToEpub A simple Chrome (and Firefox) Extension that converts Web Novels (and other web pages) into an EPUB. 项目地址: https://gitcode.com/gh_mirrors/we/WebToEpub 还在…...

终极指南:Task代码审查的10个质量控制最佳实践

终极指南:Task代码审查的10个质量控制最佳实践 【免费下载链接】task A fast, cross-platform build tool inspired by Make, designed for modern workflows. 项目地址: https://gitcode.com/gh_mirrors/ta/task Task作为一款受Make启发的现代化构建工具&am…...

如何用ChatGPT进行金融数据分析:从入门到实战的完整指南

如何用ChatGPT进行金融数据分析:从入门到实战的完整指南 【免费下载链接】awesome-chatgpt-zh ChatGPT 中文指南🔥,ChatGPT 中文调教指南,指令指南,应用开发指南,精选资源清单,更好的使用 chatG…...

如何用raylib在3天内构建跨平台游戏应用?

如何用raylib在3天内构建跨平台游戏应用? 【免费下载链接】raylib A simple and easy-to-use library to enjoy videogames programming 项目地址: https://gitcode.com/GitHub_Trending/ra/raylib raylib是一个专为游戏开发设计的轻量级跨平台框架&#xff…...

终极指南:Spring事务传播机制详解——7种行为+实战案例

终极指南:Spring事务传播机制详解——7种行为实战案例 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果…...

如何打造高转化率的Primer CSS营销链接:CTA与导航链接设计指南

如何打造高转化率的Primer CSS营销链接:CTA与导航链接设计指南 【免费下载链接】css Primer is GitHubs design system. This is the CSS implementation 项目地址: https://gitcode.com/gh_mirrors/cs/css Primer CSS作为GitHub的官方设计系统,提…...

STM32F4用HAL库驱动MPU6050,从引脚重映射到数据读取的保姆级避坑指南

STM32F4 HAL库驱动MPU6050全流程实战:从引脚重映射到数据解析的深度避坑指南 第一次接触STM32F4和MPU6050的组合时,我花了整整三天时间才让传感器吐出第一个有效数据。不是I2C通信失败,就是数据全为零,最崩溃的是明明按照教程操作…...

LinkSwift:九大网盘直链下载助手的终极技术解析与实践指南

LinkSwift:九大网盘直链下载助手的终极技术解析与实践指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...

ChatGPT Google Extension容器化部署终极指南:Docker与CI/CD完全集成方案

ChatGPT Google Extension容器化部署终极指南:Docker与CI/CD完全集成方案 【免费下载链接】chatgpt-google-extension This project is deprecated. Check my new project ChatHub: 项目地址: https://gitcode.com/gh_mirrors/ch/chatgpt-google-extension 在…...

将Hermes Agent工具连接到Taotoken的配置要点详解

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 将Hermes Agent工具连接到Taotoken的配置要点详解 Hermes Agent 是一款支持自定义模型提供方的智能体开发工具。通过将其后端连接到…...

PHPExcel样式继承机制:减少代码冗余的终极指南

PHPExcel样式继承机制:减少代码冗余的终极指南 【免费下载链接】PHPExcel ARCHIVED 项目地址: https://gitcode.com/gh_mirrors/ph/PHPExcel 在处理Excel文件时,重复设置单元格样式不仅耗时还会导致代码臃肿。PHPExcel作为一款强大的PHP电子表格处…...

React Styleguidist权限控制终极指南:如何实现私有组件文档访问限制

React Styleguidist权限控制终极指南:如何实现私有组件文档访问限制 【免费下载链接】react-styleguidist Isolated React component development environment with a living style guide 项目地址: https://gitcode.com/gh_mirrors/re/react-styleguidist R…...

告别金融数据壁垒:如何用AKTools一键打通多语言财经数据接口

告别金融数据壁垒:如何用AKTools一键打通多语言财经数据接口 【免费下载链接】aktools AKTools is an elegant and simple HTTP API library for AKShare, built for AKSharers! 项目地址: https://gitcode.com/gh_mirrors/ak/aktools 还在为不同编程语言获取…...

BilibiliDown:专业级B站视频下载工具,高效构建个人媒体库

BilibiliDown:专业级B站视频下载工具,高效构建个人媒体库 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.co…...

录播姬:如何轻松录制mikufans直播并解决常见问题?

录播姬:如何轻松录制mikufans直播并解决常见问题? 【免费下载链接】BililiveRecorder 录播姬 | mikufans 生放送录制 项目地址: https://gitcode.com/gh_mirrors/bi/BililiveRecorder 录播姬是一款专为mikufans直播平台设计的开源录制工具&#x…...

如何快速上手MuseTalk:从零开始的实时高质量唇语同步完整指南

如何快速上手MuseTalk:从零开始的实时高质量唇语同步完整指南 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk 想要为静态人物图像添加…...

如何快速完成Windows系统部署:高效自动化工具完整指南

如何快速完成Windows系统部署:高效自动化工具完整指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat Wind…...

Django 模板(Template):告别硬编码,实现动态 HTML页面

IT策士 10余年一线大厂经验&#xff0c;专注 IT 思维、架构、职场进阶。 当你开始构建一个真正的 Web 应用时&#xff0c;很快就会厌倦这种方式&#xff1a; def home(request):return HttpResponse("<h1>欢迎&#xff0c;张三&#xff01;</h1><p>今天…...