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,以及打包冲突到如何运行,期间我所遇到的问题都会 一 一 进行说明,相关版本以我文章内为…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
