Pandas数据透视表:交叉分析与聚合计算
大家好,在数据分析中,数据透视表(Pivot Table)是一种强大的工具,用于交叉分析和聚合计算。Pandas库中的数据透视表功能,使我们能够在多维数据中快速生成汇总表、统计特定维度的聚合数据,帮助揭示数据背后的信息。无论是计算销售额、求均值、还是筛选特定条件,Pandas的数据透视表都可以灵活应对。
1.数据透视表介绍
数据透视表是一种汇总数据的表格形式,允许基于多个维度对数据进行分组、聚合。它可以将大数据集中的行列信息重组并汇总,以揭示更有价值的分析结果。在Pandas中,数据透视表使用pivot_table函数实现,支持对数据进行灵活的统计和聚合。
数据透视表的结构:
-
行索引(index):作为数据透视表的行标签。
-
列索引(columns):作为数据透视表的列标签。
-
值(values):用于填充透视表的汇总数据。
-
聚合函数(aggfunc):用于汇总数据的计算方式,例如求和、计数、平均值等。
2.创建数据透视表的基本语法
在Pandas中,pivot_table函数是创建数据透视表的主要工具,其基本语法如下:
pd.pivot_table(data, index, columns=None, values=None, aggfunc='mean')
-
data:数据源DataFrame。 -
index:透视表的行索引。 -
columns:透视表的列索引。 -
values:需要计算的数据字段。 -
aggfunc:聚合函数(默认为mean),可以是sum、count等。
以下是一个示例数据集,用于演示数据透视表的使用方法:
import pandas as pd# 创建示例数据
data = {'地区': ['北方', '南方', '北方', '南方', '北方', '南方'],'产品': ['A', 'A', 'B', 'B', 'C', 'C'],'销售量': [150, 200, 300, 400, 250, 300],'销售额': [1500, 2500, 3000, 4000, 2000, 3000]
}
df = pd.DataFrame(data)
print(df)
数据集包含四列,分别表示地区、产品、销售量和销售额。
3.基本数据透视表示例
可以使用数据透视表按产品分组,计算每种产品的平均销售量:
# 创建数据透视表
pivot = pd.pivot_table(df, index='产品', values='销售量', aggfunc='mean')
print(pivot)
结果如下所示:
销售量
产品
A 175.0
B 350.0
C 275.0
在这个示例中,pivot_table函数将产品作为行索引,计算每种产品的平均销售量。
4.多字段聚合计算
数据透视表支持对多个字段进行聚合计算,例如可以同时计算销售量和销售额的平均值:
pivot = pd.pivot_table(df, index='产品', values=['销售量', '销售额'], aggfunc='mean')
print(pivot)
结果如下所示:
销售量 销售额
产品
A 175.0 2000.0
B 350.0 3500.0
C 275.0 2500.0
在这个示例中,将销售量和销售额字段同时传入values参数,生成一个汇总表。
5.使用多重聚合函数
Pandas允许在数据透视表中使用多个聚合函数。例如,可以同时计算每种产品的销售量和销售额的总和与均值:
pivot = pd.pivot_table(df, index='产品', values=['销售量', '销售额'], aggfunc=['sum', 'mean'])
print(pivot)
结果如下所示:
销售量 销售额 sum mean sum mean
产品
A 350.0 175.0 4000.0 2000.0
B 700.0 350.0 7000.0 3500.0
C 550.0 275.0 5000.0 2500.0
在这个示例中,使用aggfunc=['sum', 'mean'],同时计算了销售量和销售额的总和与均值。
6.多级索引的透视表
数据透视表支持多级索引(MultiIndex),可以按多个维度分组。以下示例展示了如何按地区和产品分组,计算销售量的均值:
pivot = pd.pivot_table(df, index=['地区', '产品'], values='销售量', aggfunc='mean')
print(pivot)
结果如下所示:
销售量
地区 产品
北方 A 150.0B 300.0C 250.0
南方 A 200.0B 400.0C 300.0
在这个示例中,使用index=['地区', '产品']创建了一个具有多级索引的透视表,实现了按地区和产品的分组汇总。
7.添加列索引
除了多级行索引,还可以为数据透视表添加列索引。例如,按地区作为行索引、产品作为列索引,计算销售额的均值:
pivot = pd.pivot_table(df, index='地区', columns='产品', values='销售额', aggfunc='mean')
print(pivot)
结果如下所示:
产品 A B C
地区
北方 1500.0 3000.0 2000.0
南方 2500.0 4000.0 3000.0
在这个示例中,透视表以地区为行索引,产品为列索引,将销售额的均值填充到交叉表格中。
8.使用margins参数添加汇总行/列
pivot_table函数提供了margins参数,用于添加汇总行和汇总列,显示每个维度的总和或均值。
以下示例展示了如何计算各地区的销售总额:
pivot = pd.pivot_table(df, index='地区', columns='产品', values='销售额', aggfunc='sum', margins=True, margins_name='总计')
print(pivot)
结果如下所示:
产品 A B C 总计
地区
北方 1500.0 3000.0 2000.0 6500.0
南方 2500.0 4000.0 3000.0 9500.0
总计 4000.0 7000.0 5000.0 16000.0
在这个示例中,margins=True在透视表中添加了汇总行和汇总列,方便查看总销售额。
9.数据透视表中的数据筛选
在Pandas数据透视表中,可以使用筛选条件过滤数据。以下示例展示了如何在创建透视表时筛选出特定的产品:
pivot = pd.pivot_table(df[df['产品'] != 'B'], index='地区', values='销售量', aggfunc='sum')
print(pivot)
结果如下所示:
销售量
地区
北方 400
南方 500
在这个示例中,对原始数据进行了筛选,仅保留产品不是B的数据,创建了按地区分组的销售量总和透视表。
10.透视表与groupby的区别
-
pivot_table:适合需要交叉分析的场景,行列可以自由设置,并生成格式化的汇总表。 -
groupby:更适合处理分组聚合数据,可以通过链式操作进行灵活的计算。
以下是一个groupby操作与pivot_table的对比示例:
# 使用 groupby 计算每个地区和产品的销售量总和
grouped = df.groupby(['地区', '产品'])['销售量'].sum().unstack()
print(grouped)
结果如下所示:
产品 A B C
地区
北方 150.0 300.0 250.0
南方 200.0 400.0 300.0
在这个示例中,groupby分组后通过unstack()转换为类似透视表的格式。虽然groupby能实现类似的效果,但对于多级聚合和计算,pivot_table更直观,且具有自动添加汇总行/列的优势。
综上所述,Pandas的数据透视表为数据分析提供了一个强大且灵活的工具。通过pivot_table函数,可以轻松实现多维度的交叉分析和聚合计算,支持复杂的数据汇总、筛选和分组操作。数据透视表不仅适用于基本的求和、均值等简单统计,还能在多层次数据中揭示更深入的关系和趋势。在实际项目中,利用数据透视表可以更高效地挖掘数据价值,为数据分析提供有力支持。
相关文章:
Pandas数据透视表:交叉分析与聚合计算
大家好,在数据分析中,数据透视表(Pivot Table)是一种强大的工具,用于交叉分析和聚合计算。Pandas库中的数据透视表功能,使我们能够在多维数据中快速生成汇总表、统计特定维度的聚合数据,帮助揭示…...
软件设计师考试大纲
文章目录 一 、考 试 说 明1. 考试目标2. 考试要求3. 考试科目设置 二、考 试 范 围考试科目1:计算机与软件工程知识1. 计算机系统基础知识1.1计算机内数据的表示及运算1.2 其他数学基础知识1.3 计算机硬件基础知识1.3.1 计算机系统的组成、体系结构分类及特性1.3.2 存储系统1.…...
一文说清C++类型转换操作符(cast operator)
一 前言 大家在编程时,一定会遇到要做类型转换的应用场景。 但是,C风格的类型转换太强大,太危险,它允许将一个给定类型转换成我们想要的任何其他类型。 所以在C中,提供了一些更安全和更明确的类型转换操作符ÿ…...
MOSFET电路栅源极GS之间并联电容后,MOS炸管原因分析
1、前言 在介绍,在进行MOSFET相关的电路设计时,可能会遇到MOSFET误导通的问题,为了解决此问题,我们提出了两种方法,一种是增大MOSFET栅极串联电阻的阻值,另外一种是在MOSFET栅-源极之间并联一个电容&#…...
gitHub常用操作
gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork,fork下来:将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址(fork…...
[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]
YOLOv5是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv5具有更高的…...
Java 垃圾回收机制(GC)概览
简介 Java垃圾收集、堆和运行时编译器默认选择 jdk1.9开始,默认使用G1收集器,GC Threads的最大数量受堆大小和可用CPU资源限制初始堆大小为物理内存的1/64最大堆大小为物理内存的1/4分层编译器,同时使用C1和C2 JVM 垃圾收集器可以为配置优…...
Kafka节点服役和退役
1 服役新节点 1)新节点准备 (1)关闭 bigdata03,进行一个快照,并右键执行克隆操作。 (2)开启 bigdata04,并修改 IP 地址。 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改完…...
Git如何简单使用
文章目录 GitGitlabGitLab和GitHub有什么区别?Gitlab简单使用Gitlab常用指令Git Git是一个分布式版本控制系统。 它用于记录文件的修改历史,方便多人协作开发软件等项目。例如一个软件开发团队,成员们会频繁修改代码,Git可以追踪每个人的修改内容、时间等信息。 主要功能…...
酒水分销积分商城小程序开发方案php+uniapp
酒水分销积分商城小程序开发,开发语言后端php,前端uniapp。核心功能模块:酒水商城、积分商城、二级分销、抽奖、优惠券。可以二开或定制。协助部署搭建。...
MTU-内核态(数据链路层或网络接口上能够传输的最大数据包大小)
MTU(最大传输单元,Maximum Transmission Unit)是网络中用于表示数据链路层或网络接口上能够传输的最大数据包大小。 1. 工作原理 MTU 决定了一个数据包(包括头部和数据部分)的最大长度。它影响到数据的传输ÿ…...
React的基础API介绍(一)
目录 useEffect1. 替代生命周期方法2. 副作用管理3. 依赖项数组4. 多次使用5. 与闭包配合6. 支持异步操作7. 减少样板代码 注意事项useEffetct是如何拿到变量count最新的值?1. 每次渲染都会创建新的函数作用域2. 闭包捕获最新的状态值3. useEffect 的执行时机 useLa…...
【Electron】总结:如何创建Electron+Element Plus的项目
我将结合官网手册与AI问到的信息,直接给出步骤,与命令。 一、准备环境 首先在C盘Users,你的登录的账号名文件夹下,编辑.npmrc文件。添加镜像地址。 如果使用了yarn,则是.yarnrc。可以全部都配置。 npm install -g …...
从依托指标字典到 NoETL 自动化指标平台,指标口径一致性管理的进阶
今天,我们一起来梳理和盘点下不同代际指标平台如何实现指标口径一致性管理: 第一代:指标口径登记与管理 第一代指标平台聚焦于指标口径的登记与管理,依托指标字典实现企业指标口径的有效检索与管理功能。 此阶段,业…...
嵌入式面试题练习 - 2024/11/15
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导 1.设有定义char *p[]{"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是() A *p[1] 3 B *(p[1] 3) C *(p[3] 1) D p[3] […...
分析http话术异常挂断原因
用户反馈在与机器人通话时,自己明明有说话,但是通话还是被挂断了,想知道原因。 分析日志 我们根据用户提供的freeswitch日志分析:发现是因为超时导致话术执行hangup动作,结束了通话。 从这一行向上分析日志ÿ…...
云岚到家 秒杀抢购
目录 秒杀抢购业务特点 常用技术方案 抢券 抢券界面 进行抢券 我的优惠券列表 活动查询 系统设计 活动查询分析 活动查询界面显示了哪些数据? 面向高并发如何提高活动查询性能? 如何保证缓存一致性? 数据流 Redis数据结构设计 如…...
【WPF】Prism库学习(一)
Prism介绍 1. Prism框架概述: Prism是一个用于构建松耦合、可维护和可测试的XAML应用程序的框架。它支持WPF、.NET MAUI、Uno Platform和Xamarin Forms等多个平台。对于每个平台,Prism都有单独的发布版本,并且它们在不同的时间线上独立开发。…...
0 -vscode搭建python环境教程参考(windows)
引用一篇非常详细的vscode搭建python环境教程 链接:vscode安装以及配置Python基本环境 以下是VSCode和PyCharm的对比 个人更建议使用VSCode Visual Studio Code (VSCode) Visual Studio Code 是由微软开发的一款免费、开源的轻量级代码编辑器。它支持多种编程语…...
Uniapp 引入 Android aar 包 和 Android 离线打包
需求: 原生安卓 apk 要求嵌入到 uniapp 中,并通过 uniapp 前端调起 app 的相关组件。 下面手把手教你,从 apk 到 aar,以及打包冲突到如何运行,期间我所遇到的问题都会 一 一 进行说明,相关版本以我文章内为…...
RK3566安卓11开发板千兆网卡RTL8211F移植避坑指南:从原理图到DTS配置全流程
RK3566安卓11平台RTL8211F千兆网卡移植实战:硬件原理到DTS配置的深度解析 当开发者需要在RK3566安卓11平台上实现千兆以太网功能时,RTL8211F PHY芯片的移植往往成为关键挑战。不同于简单的驱动加载,实际项目中常会遇到"软件配置看似正常…...
Win10下通过桥接网卡实现QEMU虚拟机与宿主机及外网的无缝互联
1. 为什么需要桥接网卡? 在Windows 10环境下使用QEMU创建虚拟机时,很多朋友都会遇到一个头疼的问题:虚拟机虽然能上网,但宿主机和虚拟机之间就是无法互相访问。这种情况我遇到过太多次了,特别是需要调试web服务或者进行…...
CodeBlocks 20.03 安装与汉化保姆级教程(附中文包下载与常见问题解决)
CodeBlocks 20.03 安装与汉化全流程实战指南 对于刚接触C/C开发的初学者来说,选择一款合适的集成开发环境(IDE)是迈入编程世界的第一步。CodeBlocks以其轻量级、跨平台和开源免费的特性,成为众多教育机构和自学者的首选。本文将带你从零开始,…...
WindowResizer:打破Windows窗口尺寸限制的终极方案
WindowResizer:打破Windows窗口尺寸限制的终极方案 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在Windows日常使用中,你是否曾对某些应用程序的窗口尺寸…...
量子安全与后量子密码学:awesome-quantum-software中的加密工具
量子安全与后量子密码学:awesome-quantum-software中的加密工具 【免费下载链接】awesome-quantum-software Curated list of open-source quantum software projects. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-quantum-software 在后量子计算时…...
声磁同步定点仪怎么选?这份选购经验干货分享
做工厂电缆故障检测、地埋电缆探测的工程人员,多半都踩过定点仪的坑:设备抗干扰差,复杂厂区地下管线密集,找半天定不准点位,开挖错位置不仅耽误工期,额外的开挖成本、停产损失动辄几万到几十万。作为常年跟…...
深度解析SacreBLEU:5个实战技巧提升机器翻译评估效率
深度解析SacreBLEU:5个实战技巧提升机器翻译评估效率 【免费下载链接】sacrebleu Reference BLEU implementation that auto-downloads test sets and reports a version string to facilitate cross-lab comparisons 项目地址: https://gitcode.com/gh_mirrors/s…...
教育工作者速看!Perplexity学术搜索正在悄然替代Google Scholar(2024教育AI搜索白皮书首发)
更多请点击: https://codechina.net 第一章:教育工作者为何需要重新定义学术搜索范式 在数字学术资源呈指数级增长的今天,传统基于关键词匹配与单一数据库检索的学术搜索方式,已难以支撑教育工作者开展跨学科教学设计、证据本位课…...
别再只跑仿真了!用Vivado 2023.1给你的FPGA图像处理项目做个“硬件体检”
从仿真到硬件的跨越:FPGA图像处理项目实战验证指南 在实验室里看着仿真波形完美无缺,却在开发板上遭遇各种"灵异事件"——这可能是每个FPGA开发者都经历过的成长仪式。仿真环境就像飞行模拟器,能教会你基本操作,但真正的…...
在自动化测试场景中利用Taotoken实现多模型API调用与成本控制
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在自动化测试场景中利用Taotoken实现多模型API调用与成本控制 对于工程团队而言,自动化测试是保障软件质量的关键环节。…...
