pandas基础(part5)--透视表与交叉表
学习笔记,这个笔记以例子为主。
开发工具:Spyder
文章目录
- Pandas透视表
- Pandas交叉表
Pandas透视表
透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行分组聚合,并对每个分组进行数据汇总。
- 语法
# 以A与B做分组汇总数据,针对D的每个值列级分组统计,统计每个分组下C列的最大值,并添加行、列小计
data.pivot_table(index=['A', 'B'], values=['C'], columns=['D'], margins=True, aggfunc='max')
接下来,我们用几个例子来学习如何用pandas来制作想要的数据透视表。
首先,我们来康康接下来几个例子所要使用的数据:
代码:
import pandas as pdleftD = {'name':['Ada', 'Tom','Black', 'Jack', 'Lee', 'Yellow', 'Blue', 'Peter', 'Green', 'Trump'],'age':[9, 9, 10, 10, 10, 10, 8, 9, 7, 8],'weight':[8, 4, 5, 6, 10, 10, 4, 5, 4, 8],'gender':['M', 'F', 'M', 'M', 'M', 'F', 'M', 'M', 'M', 'F'],'Bunny_id':[1, 2, 3, 4, 2, 4, 3, 1, 4, 5]}rightD = {'Bunny_id':[1, 2, 3, 4, 5],'foods':['A', 'B', 'C', 'D', 'E']}df_leftD = pd.DataFrame(leftD)
df_rightD = pd.DataFrame(rightD)df = pd.merge(df_leftD, df_rightD, how = 'outer')
print(df)
数据:
Bunny_id age gender name weight foods
0 1 9 M Ada 8 A
1 1 9 M Peter 5 A
2 2 9 F Tom 4 B
3 2 10 M Lee 10 B
4 3 10 M Black 5 C
5 3 8 M Blue 4 C
6 4 10 M Jack 6 D
7 4 10 F Yellow 10 D
8 4 7 M Green 4 D
9 5 8 F Trump 8 E
- 例子1
代码:
#以Bunny_id做分组汇总数据,默认统计所有列的均值
print(df.pivot_table(index=['Bunny_id']))
结果:
age weight
Bunny_id
1 9.0 6.500000
2 9.5 7.000000
3 9.0 4.500000
4 9.0 6.666667
5 8.0 8.000000
由结果可知,由于除了Bunny_id这个变量以外,只有age和weight为数值型变量,故pandas计算了age和weight的均值。
- 例子2
代码:
#以Bunny_id与gender做分组汇总数据,默认统计所有列的最大值
print(df.pivot_table(index=['Bunny_id', 'gender'], aggfunc='max'))
结果:
age foods name weight
Bunny_id gender
1 M 9 A Peter 8
2 F 9 B Tom 4M 10 B Lee 10
3 M 10 C Blue 5
4 F 10 D Yellow 10M 10 D Jack 6
5 F 8 E Trump 8
由结果可知,pandas先按照Bunny_id进行分组,再按照gender进行分组。最后对分组结果,分别计算age、foods、name、weight的最大值。
- 例子3
代码:
#以Bunny_id与gender做分组汇总数据,统计age列的均值
print(df.pivot_table(index=['Bunny_id', 'gender'], values=['age']))
结果:
age
Bunny_id gender
1 M 9.0
2 F 9.0M 10.0
3 M 9.0
4 F 10.0M 8.5
5 F 8.0
由结果可知,pandas先对Bunny_id和gender进行分组,并只显示age的分组平均值。
- 例子4
代码:
#以Bunny_id与gender做分组汇总数据,针对weight的每个值列级分组,统计age列的均值。
print(df.pivot_table(index=['Bunny_id', 'gender'], values=['age'], columns=['weight']))
结果;
age
weight 4 5 6 8 10
Bunny_id gender
1 M NaN 9.0 NaN 9.0 NaN
2 F 9.0 NaN NaN NaN NaNM NaN NaN NaN NaN 10.0
3 M 8.0 10.0 NaN NaN NaN
4 F NaN NaN NaN NaN 10.0M 7.0 NaN 10.0 NaN NaN
5 F NaN NaN NaN 8.0 NaN
由结果可知,Bunny_id和gender的组合作为行,weight作为列,共同构造了二维表,表中值为每个分组中age的平均值,如果对应分组没有值,则该位置用NaN代替。
Pandas交叉表
交叉表(cross-tabulation, 简称crosstab)是一种用于计算分组频率的特殊透视表
- 语法
# 按照A列的观测值进行分组,针对不同的B,统计频数
pd.crosstab(data.A, data.B, margins=True)
- 例子(接上面透视表案例中的数据)
代码:
print(pd.crosstab(df.gender, df.foods))
结果:
foods A B C D E
gender
F 0 1 0 1 1
M 2 1 2 2 0
pandas基础(part5)--透视表与交叉表相关推荐
- Pandas 统计分析基础 笔记5 _任务4.5 创建透视表与交叉表
文章目录 pandas__任务4.5 创建透视表与交叉表 4.5 创建透视表与交叉表 代码4-67 使用订单号作为透视表索引制作透视表 代码 4-68 修改聚合函数后的透视表 代码 4-69 使用订单 ...
- 【Python】开启Pandas进阶:图解Pandas透视表、交叉表
一.图解Pandas透视表.交叉表 终于开始Pandas进阶内容的写作了.相信很多人都应该知道透视表,在Excel会经常去制作它,来实现数据的分组汇总统计.在Pandas中,我们把它称之为pivot_ ...
- 【Python】数据分析.pandas.透视表与交叉表
文章目录 数据分析-pandas.透视表与交叉表 一.透视表 二.交叉表 三.任务实现 数据分析-pandas.透视表与交叉表 一.透视表 数据透视表是数据分析中常见的工具之一,根据一个或多个键值对数 ...
- 一文让你吃透!图解 pandas 透视表、交叉表!
一.图解Pandas透视表.交叉表 终于开始Pandas进阶内容的写作了.相信很多人都应该知道透视表,在Excel会经常去制作它,来实现数据的分组汇总统计.在Pandas中,我们把它称之为pivot_ ...
- 第2关:Pandas创建透视表和交叉表
任务描述 本关任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间.每个星期下的小费总和情况. 相关知识 透视表 透视表是各种电子表格程序和其他数据分析软 ...
- 【Pandas分组聚合】进阶:透视表、交叉表(pivot_table() 、crosstab())
Pandas透视表.交叉表 创建DataFrame结构 透视表 pivot_table() 单列聚合 多列聚合 交叉表 crosstab() 计算分组频率 两列分组后求第三列的统计指标 创建DataF ...
- Pandas数据分析15——pandas数据透视表和交叉表
参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对数据框也可以像excel一样进行数据透视表整合之类的操作.主要是针对分类数据进行操作,还可以计算数值型 ...
- Python数据分析 | (31) 透视表和交叉表
目录 1. 透视表 2. 交叉表:crosstab 3. 总结 1. 透视表 透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的 数据汇总工具.它根据一个或多个键对数据进 ...
- 4.5 创建透视表与交叉表
4.5 创建透视表与交叉表 4.5.1利用pivot_table函数可以实现透视表 pivot_table函数的常用参数及其说明 4.5.2 使用crosstab函数创建交叉表 crosstab函数的 ...
最新文章
- linux启停was命令,linux下的启停脚本
- 让PHP更快的提供文件下载 【转】
- 64位操作系统的原理
- string获取 倒数 下标_Redis系列:Redis字符串(STRING)介绍
- centos7安装配置rsync以及遇到问题
- python set()函数讲解
- struts2标签_select获取action传过来的值
- Consider defining a bean named 'entityManagerFactory' in your configuration解决办法
- 从零学ELK系列(七):Centos安装Filebeat(超详细图文教程)
- B00006 函数itoa()
- Python的is和==区别
- 511遇见易语言列表框去重复项目到列表框
- 项目中的“里程碑”就是我们常说的里程碑吗?
- 克服J2SE 1.3-1.4 的不兼容性
- 【求职】作业帮 Java 方向面经
- 针对第2章习题6的SPJ数据库,为项目名称为“一汽”的工程项目建立一个供应情况的视图V_SPJ,视图中应包括供应商代码SNO,零件代码PNO,供应数量QTY,并针对该视图完成下列查询 (1)找出一汽
- Android消息传递机制总结
- Red and Black 模板题 /// BFS oj22063
- SCT2450,SCT2450Q,降压DCDC
- win10安装PL2303_Prolific_DriverInstaller_v1.5.0驱动