groupby + agg:数据分析 80% 的活就这两招
groupby agg数据分析 80% 的活就这两招“各品类销售额多少” “每个月的 GMV 趋势” “各部门绩效排名”这些问题的答案都是 groupby 聚合。Excel 里你要拉透视表、写 SUMIFPandas 里就两行。groupby 的本质分—算—合importpandasaspdimportnumpyasnp dfpd.DataFrame({部门:[技术,销售,技术,销售,技术,销售,市场,市场],姓名:[张三,李四,王五,赵六,孙七,周八,吴九,郑十],薪资:[15000,12000,18000,14000,20000,13000,11000,10000],绩效:[85,92,78,88,95,80,90,85],})# 各部门平均薪资print(df.groupby(部门)[薪资].mean())# 部门# 技术 17666.67# 市场 10500.00# 销售 13000.00三步骤按部门分组 → 对薪资求均值 → 合并输出。常用聚合函数groupeddf.groupby(部门)print(grouped[薪资].sum())# 求和print(grouped[薪资].mean())# 均值print(grouped[薪资].median())# 中位数print(grouped[薪资].max())# 最大值print(grouped[薪资].min())# 最小值print(grouped[薪资].std())# 标准差print(grouped[薪资].count())# 计数print(grouped[薪资].nunique())# 唯一值个数agg一次算多个指标# 对薪资同时算均值和总和resultdf.groupby(部门)[薪资].agg([mean,sum,count])result.columns[平均薪资,总薪资,人数]print(result)# 对不同列算不同指标resultdf.groupby(部门).agg({薪资:[sum,mean],绩效:[mean,max,min],})print(result)# 自定义聚合函数defrange_func(x):returnx.max()-x.min()resultdf.groupby(部门).agg({薪资:range_func})print(result)多级分组# 模拟更大数据集np.random.seed(42)salespd.DataFrame({year:np.random.choice([2024,2025,2026],100),quarter:np.random.choice([Q1,Q2,Q3,Q4],100),category:np.random.choice([手机,电脑,耳机],100),amount:np.random.randint(1000,10000,100)})# 多列 groupbyresultsales.groupby([year,category])[amount].sum()print(result)# unstack 转成透视表格式pivotresult.unstack()print(pivot)# 透视表一步到位pivotpd.pivot_table(sales,valuesamount,indexyear,columnscategory,aggfuncsum,fill_value0)print(pivot)transform保持原形状# transform 返回和原始数据一样长的结果dfpd.DataFrame({部门:[技术,销售,技术,销售,技术],薪资:[15000,12000,18000,14000,20000]})# 每人薪资 vs 部门平均df[部门均值]df.groupby(部门)[薪资].transform(mean)df[与均值差]df[薪资]-df[部门均值]print(df)agg返回的是分组后的汇总值行数变少transform返回的是和原始数据一样长的值。apply最灵活# 每个部门薪资最高的那个人deftop_earner(group):returngroup.nlargest(1,薪资)resultdf.groupby(部门,group_keysFalse).apply(top_earner)print(result)# 给每个部门的薪资排序组内排名df[组内排名]df.groupby(部门)[薪资].rank(ascendingFalse)print(df)实战销售数据分析np.random.seed(123)datespd.date_range(2026-01-01,2026-06-30,freqD)salespd.DataFrame({date:np.random.choice(dates,500),product:np.random.choice([手机,电脑,耳机,平板],500),city:np.random.choice([北京,上海,广州,深圳],500),amount:np.random.randint(500,15000,500),})# 各产品总销售额print( 产品销售额排名 )print(sales.groupby(product)[amount].sum().sort_values(ascendingFalse))# 每月销售额趋势sales[month]sales[date].dt.to_period(M)monthlysales.groupby(month)[amount].sum()print(f\n 月度销售额 \n{monthly})# 每城市最畅销产品city_productsales.groupby([city,product])[amount].sum()print(f\n 深圳最畅销 \n{city_product.loc[深圳].sort_values(ascendingFalse)})# 各产品的客单价和订单数statssales.groupby(product).agg(总销售额(amount,sum),订单数(amount,count),客单价(amount,mean),最高单(amount,max)).round(1)print(f\n 综合统计 \n{stats})新手常见坑坑1groupby 结果索引# groupby 结果可能有多级索引resultsales.groupby([city,product])[amount].sum()# 用 reset_index 展平resultresult.reset_index()坑2NaN 被分组忽略# 如果分组列有 NaN那行不会被计入任何组# 先 fillna 再 groupbydf[city]df[city].fillna(未知)坑3agg 里写错函数名# ❌ 函数名是字符串# df.groupby(x).agg(average) # 没有这个# ✅ 正确的 Pandas 聚合函数名df.groupby(x).agg(mean)动手试试按部门分组计算薪资的总和、均值、最大值、人数用 pivot_table 做一个按年份和季度交叉的销售额表用 transform 给每个员工加上组内排名写在最后groupby agg 就是 Pandas 的透视表引擎。80% 的数据分析问题能用这两招解决。多练、多试手感到了就熟了。下一篇讲 DataFrame 的合并——merge、concat、join多张表怎么优雅地拼在一起。

相关新闻

羞羞答答地搞了个数学宝典

羞羞答答地搞了个数学宝典

从申请软著到断断续续开发,搞了一年,总算上架了。 小米市场上架最快,当天提交,当天上架。 App Store审核时间长达8天,但一次性通过。最难的华为市场,因为重名,还得重新备案,导致现在…

2026/7/5 14:52:35阅读更多 →
ViT (Vision Transformer) 图像分类实战:ImageNet-1K 上 85.2% Top-1 精度复现指南

ViT (Vision Transformer) 图像分类实战:ImageNet-1K 上 85.2% Top-1 精度复现指南

ViT (Vision Transformer) 图像分类实战:从零实现ImageNet-1K 85.2% Top-1精度当卷积神经网络(CNN)长期统治计算机视觉领域时,2020年一篇名为《An Image is Worth 16x16 Words》的论文彻底改变了游戏规则。Vision Transformer&…

2026/7/5 14:52:35阅读更多 →
数据在内存中的存储:从整数到浮点数的底层原理

数据在内存中的存储:从整数到浮点数的底层原理

📑 本文目录 📖 1. 整数在内存中的存储 🧩 原码、反码、补码的定义🤔 为什么计算机要使用补码? 📖 2. 大小端字节序和字节序判断 🧩 2.1 什么是大小端?🤔 2.2 为什么会有…

2026/7/5 14:52:35阅读更多 →
5个关键设计揭秘:Vanguard内核驱动如何构建游戏反作弊的底层防线

5个关键设计揭秘:Vanguard内核驱动如何构建游戏反作弊的底层防线

5个关键设计揭秘:Vanguard内核驱动如何构建游戏反作弊的底层防线 【免费下载链接】Vanguard Official Vanguard Anti-Cheat source code. 项目地址: https://gitcode.com/gh_mirrors/va/Vanguard Vanguard内核驱动作为Riot Games官方开源的游戏反作弊系统&am…

2026/7/5 16:02:47阅读更多 →
IDM激活脚本终极指南:如何免费解锁完整版下载管理器

IDM激活脚本终极指南:如何免费解锁完整版下载管理器

IDM激活脚本终极指南:如何免费解锁完整版下载管理器 【免费下载链接】IDM-Activation-Script An open-source tool to activate and reset the trial of Internet Download Manager. 项目地址: https://gitcode.com/gh_mirrors/idma/IDM-Activation-Script I…

2026/7/5 16:02:47阅读更多 →
ESP-Drone完整指南:基于ESP32的开源无人机终极解决方案

ESP-Drone完整指南:基于ESP32的开源无人机终极解决方案

ESP-Drone完整指南:基于ESP32的开源无人机终极解决方案 【免费下载链接】esp-drone Mini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs. 项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone ESP-Drone是基于乐鑫ESP32/ESP32-S2/E…

2026/7/5 16:02:47阅读更多 →
Kali Linux无线渗透测试实战:从环境搭建到完整工作流详解

Kali Linux无线渗透测试实战:从环境搭建到完整工作流详解

1. 项目概述:为什么你需要一套完整的无线渗透工具集? 如果你是一名网络安全爱好者、渗透测试工程师,或者只是对自己家WiFi的安全性感到好奇,那么“无线渗透测试”这个概念对你来说一定不陌生。它听起来很酷,甚至有点黑…

2026/7/5 16:02:47阅读更多 →
告别SQL困境:Chat2DB AI智能数据库工具让你3分钟上手数据查询

告别SQL困境:Chat2DB AI智能数据库工具让你3分钟上手数据查询

告别SQL困境:Chat2DB AI智能数据库工具让你3分钟上手数据查询 【免费下载链接】Chat2DB AI-driven database tool and SQL client, The hottest GUI client, supporting MySQL, Oracle, PostgreSQL, DB2, SQL Server, DB2, SQLite, H2, ClickHouse, and more. 项目…

2026/7/5 16:02:47阅读更多 →
终极Yaconf实战指南:三步构建PHP高性能配置中心

终极Yaconf实战指南:三步构建PHP高性能配置中心

终极Yaconf实战指南:三步构建PHP高性能配置中心 【免费下载链接】yaconf A PHP Persistent Configurations Container 项目地址: https://gitcode.com/gh_mirrors/ya/yaconf 第一部分:为什么传统配置管理让PHP应用变慢? 在PHP应用开发…

2026/7/5 15:57:46阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →