「目录」
数据聚合与分组运算
Data Aggregation and Group Operations
10.1 => GroupBy机制
10.2 => 数据聚合
10.3 => apply:拆分 - 应用 - 合并
10.4 => 透视表和交叉表
pivot table透视表
最近真的是又浮躁又悠闲的日子,明明内卷的现在大家都很累,但又怕真的闲下来,真是矛盾啊。
这几天看了空之境界的剧场版,虽然是十年前的作品但真的令人印象深刻,无论剧情,人物还是音乐。今天上面的音乐就是其中的一首,听的时候真的有我小学放学后,躺在银杏树下的感觉了。
上面是一点小感慨,下面正式开始吧。
透视表根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。
DataFrame有一个pivot_table方法可以实现这个功能,除此以外还可以添加margins分项总计.
import numpy as np
import pandas as pd复制
回到原书之前那个小费数据集:
tips = pd.read_csv(r'.\tips.csv')
tips['tip_pct'] = tips['tip'] / tips['total_bill']
tips.head()复制

pivot_table的默认聚合类型是平均值,假设我们想要根据日期day和是否吸烟smoker来计算平均数,包括平均人数size,平均小费tip等:
tips.pivot_table(index=['day', 'smoker'])
复制

若我们只想要查看平均小费比例tip_pct和平均人数size,然后想要根据time和day分组:
tips.pivot_table(['tip_pct', 'size'], index=['time', 'day'])
复制

margins
传入margins=True添加分项小计,我们看到这会新增名为All的行,注意哦,在这里All值为平均数:
tips.pivot_table(['tip_pct', 'size'], index=['time', 'day'], margins=True)
复制

aggfunc
要使用其他聚合函数可以将其值传给aggfunc。比如这次传入aggfunc=sum我们来查看根据日期分组的总消费额:
tips.pivot_table('total_bill', index='time', columns='day', aggfunc=sum, margins=True)
复制

fill_value
如果有不存在的值(NA),我们可能会希望设置一个fill_value:
tips.pivot_table('tip', index=['time', 'smoker'], columns='day', aggfunc=sum, fill_value=0, margins=True)
复制

那就这样吧,BYE-BYE!!
往期回顾

Pandas里的apply方法


Stay hungry, stay foolish
文章转载自Yuan的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
MogDB 发布更新,解决 openGauss 数据库在长事务情况下Ustore表膨胀问题
MogDB
286次阅读
2025-04-17 10:41:41
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
184次阅读
2025-04-01 16:20:44
官宣,Milvus SDK v2发布!原生异步接口、支持MCP、性能提升
ZILLIZ
123次阅读
2025-04-02 09:34:13
WingPro for Mac 强大的Python开发工具 v10.0.9注册激活版
一梦江湖远
49次阅读
2025-03-29 10:33:27
python操作MySQL数据库
怀念和想念
48次阅读
2025-03-30 23:22:07
释放 Oracle 表空间,高水位收缩操作
hongg
44次阅读
2025-04-14 09:45:00
AI与我共创WEB界面
布衣
40次阅读
2025-04-14 22:13:51
python排序sort()和sorted()区别
wzf0072
35次阅读
2025-04-09 19:57:46
使用python将excel数据导入数据库
wzf0072
34次阅读
2025-03-28 17:35:31
MySQL ALTER 命令
张静懿
33次阅读
2025-04-11 15:25:52