pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?
pivot_table
和 groupby
是 pandas 中两种常用的数据聚合方法,它们都能实现数据分组和汇总,但在使用方式和输出结构上有显著区别。
0. 基本介绍
groupby
分组聚合
groupby
是 Pandas 库中的一个功能强大的方法,用于根据一个或多个列
对数据进行分组
,并对每个分组执行聚合
操作。它通常与聚合函数
(如 sum、mean、count 等)一起使用,以便对分组后的数据进行统计分析。
工作逻辑:“拆分-应用-合并”:它按照某些条件将数据分组,然后对每组应用函数,最后将结果合并。
基本用法
import pandas as pddf = pd.DataFrame({'城市': ['北京', '上海', '北京', '上海', '北京', '上海'],'月份': ['1月', '1月', '2月', '2月', '3月', '3月'],'销售额': [100, 200, 150, 250, 120, 230]
})
# 按城市分组计算平均销售额
avg_sales = df.groupby('城市')['销售额'].mean()
# 按城市和月份两级分组
grouped = df.groupby(['城市', '月份'])['销售额'].sum()
# 同时计算总和、平均值和最大值
result = df.groupby('城市')['销售额'].agg(['sum', 'mean', 'max']).round(2)
# 定义计算极差的函数
def range_func(x):return x.max() - x.min()result = df.groupby('城市')['销售额'].agg(range_func).to_frame("Range")
pivot_table
数据透视表
pivot
英/ˈpɪvət/
n.支点;中心;枢轴;核心;中心点;最重要的人(或事物)
pivot_table创建电子表格风格的数据透视表
,可以看作是多维的groupby操作
,但提供了更直观
的行列交叉分析
能力。
基本用法
import pandas as pddf = pd.DataFrame({'城市': ['北京', '上海', '北京', '上海', '北京', '上海'],'月份': ['1月', '1月', '2月', '2月', '3月', '3月'],'销售额': [100, 200, 150, 250, 120, 230]
})# 创建简单的透视表
pivot = pd.pivot_table(df, values='销售额', index='城市', columns='月份', aggfunc='sum')
多维度分析
# 假设数据有更多维度
df['产品线'] = ['A', 'B', 'A', 'B', 'A', 'B']# 多维度透视
pivot = pd.pivot_table(df, values='销售额', index=['城市'], columns=['月份', '产品线'], aggfunc='sum',fill_value=0)
多个聚合函数
# 同时使用多个聚合函数
pivot = pd.pivot_table(df, values='销售额', index='城市', columns='月份', aggfunc=['sum', 'mean', 'count'])
#添加汇总行/列
pivot = pd.pivot_table(df, values='销售额', index='城市', columns='月份', aggfunc='sum',margins=True, # 添加汇总margins_name='总计')
1. 输出结构的差异
特性 | groupby | pivot_table |
---|---|---|
默认输出格式 | 返回 Series 或多层索引的 DataFrame | 直接返回二维表格形式的 DataFrame |
行列结构 | 结果可能包含多层索引(不易直观阅读) | 自动生成行列交叉的表格(类似Excel透视表) |
可视化友好度 | 需额外处理才能用于图表 | 直接支持热力图、柱状图等可视化 |
示例对比:
示例数据
groupby
# groupby 输出(多层索引Series)
df.groupby(['Region', 'Product'])['Sales'].sum()
pivot_table
# pivot_table 输出(二维表格)
pd.pivot_table(df, values='Sales', index='Region', columns='Product', aggfunc='sum')
2. 功能侧重点不同
groupby | pivot_table |
---|---|
更适合编程化的数据处理流程 | 更适合生成人类可读的汇总报表 |
支持更复杂的链式操作 (如apply ) | 专注于行列交叉 的聚合展示 |
灵活性更高,可自定义分组逻辑 | 结构化更强,适合标准化分析场景 |
3. 多维分析能力
-
groupby
虽然可以通过多列分组实现多维分析,但结果需要手动处理才能清晰展示:df.groupby(['Region', 'Product', 'Date'])['Sales'].sum().unstack("Product")
-
pivot_table
原生支持多维交叉分析,通过index
和columns
参数直观控制:pd.pivot_table(df, values='Sales', index=['Region', 'Date'], columns='Product', aggfunc='sum')
4. 实际应用场景选择
优先使用 groupby
当:
- 需要灵活的分组后操作(如过滤、转换)
- 进行复杂的分组计算(如滚动统计、自定义聚合)
- 数据需要进一步管道式处理(
method chaining
)
优先使用 pivot_table
当:
- 快速生成业务报表或可视化数据
- 需要直观对比行列维度关系
- 处理类似Excel透视表的需求
5. 性能对比
- 简单聚合场景下性能相近
- 复杂多维分析时,
pivot_table
对内存更友好(自动处理行列展开) groupby
在链式操作中可能更高效(避免中间结果生成)
两者本质都是分组聚合,但 pivot_table
是 groupby
的一种结构化输出形式。理解它们的差异后,可以根据具体需求灵活选择或组合使用。
相关文章:

pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?
pivot_table 和 groupby 是 pandas 中两种常用的数据聚合方法,它们都能实现数据分组和汇总,但在使用方式和输出结构上有显著区别。 0. 基本介绍 groupby分组聚合 groupby 是 Pandas 库中的一个功能强大的方法,用于根据一个或多个列对数据进…...
微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT
微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT 数据集准备常用数据集自定义数据集AlpacaShareGPT数据集准备 常用数据集 预训练数据集 Wiki Demo (en)RefinedWeb (en)RedPajama V2 (en)Wikipedia (en)Wikipedia (zh)Pile (en)...
【Gradio】helloworld程序
前言 发现这个库用来做可视化的demo还不错,简单学习一下。 官网 https://www.gradio.app/ 安装 pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple/helloWorld 示例 import gradio as grdef greet(name):return "hello"nameifacegr…...
机器学习例题——预测facebook签到位置(K近邻算法)和葡萄酒质量预测(线性回归)
一、预测facebook签到位置 代码展示: import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import…...

对golang中CSP的理解
概念: CSP模型,即通信顺序进程模型,是由英国计算机科学家C.A.R. Hoare于1978年提出的。该模型强调进程之间通过通道(channel)进行通信,并通过消息传递来协调并发执行的进程。CSP模型的核心思想是“不要通过…...
使用 pgrep 杀掉所有指定进程
使用 pgrep 杀掉所有指定进程 pgrep 是一个查找进程 ID 的工具,结合 pkill 或 kill 命令可以方便地终止指定进程。以下是几种方法: 方法1:使用 pkill(最简单) pkill 进程名例如杀掉所有名为 “firefox” 的进程&…...
Missashe考研日记-day36(改版说明)
Missashe考研日记-day36 改版说明 经过一天的思考、纠结和尝试,博主决定对更新内容进行改版,如下:1.不再每天都发一篇日记,改为一周发一篇包含一周七天学习进度的周记,但为了标题和以前相同(强迫症&#…...
基于Jetson Nano与PyTorch的无人机实时目标跟踪系统搭建指南
引言:边缘计算赋能智能监控 在AIoT时代,将深度学习模型部署到嵌入式设备已成为行业刚需。本文将手把手指导读者在NVIDIA Jetson Nano(4GB版本)开发板上,构建基于YOLOv5SORT算法的实时目标跟踪系统,集成无人…...

【LunarVim】CMake LSP配置
在 LunarVim 中为 CMakeLists.txt 文件启用代码提示(如补全和语义高亮),需要安装支持 CMake 的 LSP(语言服务器)和适当的插件。以下是完整配置指南: 1、配置流程 1.1 安装cmake-language-server 通过 Ma…...

Mkdocs页面如何嵌入PDF
嵌入PDF 嵌入PDF代码 ,注意PDF的相对地址 <iframe src"../个人简历.pdf (相对地址)" width"100%" height"800px" style"border: 1px solid #ccc; overflow: auto;"></iframe>我的完整代码: <d…...
从零开始学Flink:开启实时计算的魔法之旅
在凌晨三点的数据监控大屏前,某电商平台的技术负责人突然发现一个异常波动:支付成功率骤降15%。传统的数据仓库此时还在沉睡,而基于Flink搭建的实时风控系统早已捕捉到这个信号,自动触发预警机制。当运维团队赶到时,系…...

融合静态图与动态智能:重构下一代智能系统架构
引言:智能系统的分裂 当前的大模型系统架构正处于两个极端之间: 动态智能体系统:依赖语言模型动态决策、自由组合任务,智能灵活但稳定性差; 静态流程图系统:具备强工程能力,可控可靠…...
滑动窗口-窗口中的最大/小值-单调队列
求窗口的最大值 #include <iostream> //滑动窗口最大值用单调队列q[],q存储候选最大值的下标 //队列头是最大值的下标 using namespace std; const int N100010; int nums[N],q[N]; int hh0,tt-1;// hh 是队头指针,tt 是队尾指针,初始…...
Java设计模式全面详解:从基础到高级的23种模式简介
引言:设计模式概述 设计模式是软件设计中常见问题的典型解决方案,它们就像预制的蓝图,你可以通过调整来解决代码中反复出现的设计问题。Java设计模式通常分为三大类: 创建型模式:处理对象创建机制结构型模式:处理对象组合行为型模式:处理对象间的交互与职责分配#mermai…...

WORD压缩两个免费方法
日常办公和学习中,Word文档常常因为包含大量图片、图表或复杂格式而导致文件体积过大,带来诸多不便,比如 邮件发送受限:许多邮箱附件限制在10-25MB,大文件无法直接发送 存储空间占用:大量文档占用硬盘或云…...

skywalking服务安装与启动
skywalking服务安装并启动 1、介绍2、下载apache-skywalking-apm3、解压缩文件4、创建数据库及用户5、修改配置文件6、下载 MySQL JDBC 驱动7、启动 OAP Serve,需要jkd11,需指定jkd版本,可以修改文件oapService.sh8、启动 Web UI,需要jkd11,需指定jkd版本,可以修改文件oapServi…...

Qt 中信号与槽(signal-slot)机制支持 多种连接方式(ConnectionType)
Qt 中信号与槽(signal-slot)机制支持 多种连接方式(ConnectionType) Qt 中信号与槽(signal-slot)机制支持 多种连接方式(ConnectionType),用于控制信号发出后如何调用槽…...
Booth Encoding vs. Non-Booth Multipliers —— 穿透 DC 架构看乘法器的底层博弈
目录 🧭 前言 🌱 1. Non-Booth 乘法器的实现原理(也叫常规乘法器) 🔧 构建方式 ✍️ 例子:4x4 Non-Booth 乘法器示意 🧱 硬件结构 ✅ 特点总结 ⚡ 2. Booth Encoding(布斯编码…...

Midjourney-V7:支持参考图片头像或背景生成新保真图
Midjourney-V7重磅升级Omni Reference:全能图像参考神器!再也不用担心生成图片货不对版了! 就在上周,Midjourney发版它最新的V7版本:Omini Reference,提供了全方位图像参考功能,它可以参考你提…...

耀圣-气动带刮刀硬密封法兰球阀:攻克颗粒高粘度介质的自清洁 “利器”
气动带刮刀硬密封法兰球阀:攻克颗粒高粘度介质的自清洁 “利器” 在化工、矿业、食品加工等行业中,带颗粒高粘度介质、料浆及高腐蚀性介质的输送与控制一直是行业难题。普通阀门极易因介质附着、颗粒堆积导致卡阻失效,密封面磨损加剧&#x…...

Google云计算原理和应用之分布式锁服务Chubby
Chubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题。通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性。不过值得注意的是,这种锁只是一种建议性的锁(Advisory Lock)而不是强制性的锁,这种选择系统具有更大…...

SM2Utils NoSuchMethodError: org.bouncycastle.math.ec.ECFieldElement$Fp.<init
1,报错图示 2,报错原因: NoSuchMethodError 表示运行时找不到某个方法,通常是编译时依赖的库版本与运行时使用的库版本不一致。 错误中的 ECFieldElement$Fp. 构造函数参数为 (BigInteger, BigInteger),说明代码期望使…...

《100天精通Python——基础篇 2025 第16天:异常处理与调试机制详解》
目录 一、认识异常1.1 为什么要使用异常处理机制?1.2 语法错误1.3 异常错误1.4 如何解读错误信息 二、异常处理2.1 异常的捕获2.2 Python内置异常2.3 捕获多个异常2.4 raise语句与as子句2.5 使用traceback查看异常2.6 try…except…else语句2.7 try…except…finally语句--捕获…...

动态创建链表(头插法、尾插法)
今天我们来学习动态创建链表!!! 动态创建链表:分为头插法和尾插法 头插法(动态创建): 头插法就是让新节点变成头 代码如下 吐血了:这边有个非常重要的知识点,这边第三…...

利用混合磁共振成像 - 显微镜纤维束成像技术描绘结构连接组|文献速递-深度学习医疗AI最新文献
Title 题目 Imaging the structural connectome with hybrid MRI-microscopy tractography 利用混合磁共振成像 - 显微镜纤维束成像技术描绘结构连接组 01 文献速递介绍 通过多种模态绘制大脑结构能够增进我们对大脑功能、发育、衰老以及疾病的理解(汉森等人&am…...

安全监控之Linux核心资产SSH连接监测邮件
文章目录 一、引言二、邮箱设置三、脚本配置四、登录测试 一、引言 在某些特殊时期(如HVV)需要重点监控Linux核心资产SSH连接登录活动情况,实现ssh登录报警监控。其实实现方式并不难。 二、邮箱设置 在邮箱中需要启用“SMTP”协议…...

文旅田园康养小镇规划设计方案PPT(85页)
1. 项目背景与定位 背景:位于长三角经济圈,依托安吉丰富的自然与文化资源,旨在打造集康养、度假、文化体验于一体的综合小镇。 定位:成为浙北地区知名的康养旅游目的地,融合“一溪两岸”规划理念,实现全面…...
部署Superset BI(四)连接sql server数据库
sqlserver没有出现在Superset的连接可选菜单上,这一点让我奇怪。既然没有那就按着HANA的配置方式,照猫画虎。更奇怪的是安装好还不能出现,难道superset和微软有仇? --修改配置文件 rootNocobase:/usr/superset/superset# cd docke…...

【Linux操作系统】第一弹——Linux基础篇
文章目录 💡 一. Linux的基本常识🪔 1.1 linux网络连接三种方式🪔1.2 虚拟机的克隆🪔1.3 虚拟机的快照🪔1.4 虚拟机的迁移和删除🪔1.5 vmtools工具 💡二. Linux的目录结构🪔2.1 Linu…...
开源数字人框架 AWESOME - DIGITAL - HUMAN:技术革新与行业标杆价值剖析
一、项目核心价值:解锁数字人技术新境界 1. 技术普及:降低准入门槛,推动行业民主化 AWESOME - DIGITAL - HUMAN 项目犹如一场技术春雨,为数字人领域带来了普惠甘霖。它集成了 ASR、LLM、TTS 等关键能力,并提供模块化扩展接口,将原本复杂高深的数字人开发流程,转化为一…...