入门pandas—数据透视与交叉表
数据透视
原数据
日期 部门 销售人员 所属区域 数量 金额 成本
0 2019-01-01 销售 李平平 湖北 16 7 8
1 2019-01-02 销售 李平平 湖北 40 8 3
2 2019-01-03 销售 李平平 湖北 20 6 7
3 2019-01-04 销售 李平平 湖北 20 7 5
4 2019-01-05 销售 李平平 湖北 16 6 6
... ... .. ... ... ... .. ..
1215 2022-04-30 财务 熊牧 山东 250 4 8
1216 2022-05-01 客服 赵温江 山东 2200 4 8
1217 2022-05-02 客服 赵温江 山东 1400 3 3
1218 2022-05-03 客服 赵温江 四川 3500 7 3
1219 2022-05-04 客服 赵温江 四川 2200 4 4
index需要聚合的列名,默认情况下聚合所有数据值的列
import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/透视.xlsx'
data = pd.read_excel(path)
data2 = pd.pivot_table(data,index = ['部门','销售人员'])
print(data2)
成本 数量 金额
部门 销售人员
办公室 郑浪 5.657143 908.285714 5.714286
客服 蒋波 5.500000 659.401639 5.377049赵温江 5.279412 1108.073529 5.735294
财务 冯文 5.490323 284.264516 5.793548熊牧 5.491525 482.423729 5.559322
销售 李平平 5.472906 112.679803 5.349754王松 5.444640 117.539543 5.604569郑浪 4.777778 1636.666667 5.444444
values定义了在透视表里显示的列
data2 = pd.pivot_table(data,index = ['部门','销售人员'],values=['数量','金额'])
数量 金额
部门 销售人员
办公室 郑浪 908.285714 5.714286
客服 蒋波 659.401639 5.377049赵温江 1108.073529 5.735294
财务 冯文 284.264516 5.793548熊牧 482.423729 5.559322
销售 李平平 112.679803 5.349754王松 117.539543 5.604569郑浪 1636.666667 5.444444
columns在结果透视表的列上进行分组的列名或其它分组键
data2 = pd.pivot_table(data,index = ['部门','销售人员'],values=['数量','金额'],columns='所属区域')
数量 ... 金额
所属区域 四川 山东 河北 ... 河北 河南 湖北
部门 销售人员 ...
办公室 郑浪 1160.000000 NaN 945.000000 ... 5.500000 6.000000 5.333333
客服 蒋波 869.235294 250.000000 364.307692 ... 5.230769 5.365854 5.416667赵温江 1419.000000 1310.500000 1325.181818 ... 6.454545 5.500000 6.000000
财务 冯文 286.487805 384.615385 354.882353 ... 5.823529 5.734694 5.800000熊牧 540.800000 499.342105 NaN ... NaN 5.083333 6.000000
销售 李平平 110.193182 99.294118 66.526316 ... 5.736842 5.363636 5.028571王松 115.014563 87.545455 145.986667 ... 5.386667 5.682692 5.534884郑浪 830.000000 500.000000 NaN ... NaN NaN 5.000000
aggfunc聚合函数或函数列表(默认情况下是mean)
给value列的数据值指定函数
import pandas as pd
import numpy as np #因为要用到mean所以传入numpy
path = 'C:/Users/Administrator/Desktop/playground2/透视.xlsx'
data = pd.read_excel(path)
data2 = pd.pivot_table(data,index = ['部门','销售人员'],values=['数量','金额'],columns='所属区域',aggfunc=[sum,np.mean])
print(data2)
sum ... mean 数量 ... 金额
所属区域 四川 山东 河北 ... 河北 河南 湖北
部门 销售人员 ...
办公室 郑浪 12760.0 NaN 3780.0 ... 5.500000 6.000000 5.333333
客服 蒋波 14777.0 750.0 4736.0 ... 5.230769 5.365854 5.416667赵温江 17028.0 15726.0 14577.0 ... 6.454545 5.500000 6.000000
财务 冯文 11746.0 5000.0 6033.0 ... 5.823529 5.734694 5.800000熊牧 2704.0 18975.0 NaN ... NaN 5.083333 6.000000
销售 李平平 9697.0 1688.0 1264.0 ... 5.736842 5.363636 5.028571王松 23693.0 4815.0 10949.0 ... 5.386667 5.682692 5.534884郑浪 3320.0 500.0 NaN ... NaN NaN 5.000000
fill_value 在结果表中替换缺失值
data2 = pd.pivot_table(data,index = ['部门','销售人员'],values=['数量','金额'],columns='所属区域',aggfunc=[sum,np.mean],fill_value=0) #缺失值替换为0
dropna 如果为True,将不含所有条目均为Na的列(默认为False)
dropna=True
margins 添加行/列小计和总计 (默认为False)
margins =True
交叉表 crosstab
说明:
是透视表的一部分, aggfunc=count而已
pd.crosstab(data.Nationality, data.Handedness, margins=True)
例如:根据日期中的月份和所属区域,对部门进行统计(计数)
import pandas as pd
import numpy as np #因为要用到mean所以传入numpy
path = 'C:/Users/Administrator/Desktop/playground2/透视.xlsx'
data = pd.read_excel(path)
data2 = pd.crosstab([data.日期.dt.month,data.所属区域],data.部门,margins=True)
print(data2)
部门 办公室 客服 财务 销售 All
日期 所属区域
1 四川 0 1 16 30 47山东 0 0 0 10 10河北 0 0 2 7 9河南 0 1 12 16 29湖北 0 2 3 24 29
2 四川 0 4 7 27 38山东 0 4 4 2 10河北 0 0 0 9 9河南 0 6 3 27 36湖北 0 0 0 20 20
3 四川 1 9 5 11 26山东 0 1 15 8 24河北 3 3 0 9 15河南 3 5 1 18 27湖北 9 3 1 19 32
4 四川 9 8 2 9 28山东 0 0 28 3 31河北 1 0 0 21 22河南 8 3 1 8 20湖北 0 0 0 19 19
5 四川 1 2 0 23 26山东 0 2 0 8 10河北 0 0 0 13 13河南 0 0 0 20 20湖北 0 0 0 28 28
6 四川 0 0 1 31 32山东 0 0 0 6 6河北 0 0 6 3 9河南 0 0 16 3 19湖北 0 0 5 19 24
7 四川 0 1 0 29 30河北 0 6 1 8 15河南 0 4 0 20 24湖北 0 19 0 5 24
8 四川 0 0 0 23 23山东 0 0 0 4 4河北 0 5 0 7 12河南 0 13 0 20 33湖北 0 13 0 8 21
9 四川 0 1 1 27 29山东 0 0 0 13 13河北 0 0 0 6 6河南 0 13 2 5 20湖北 0 10 3 9 22
10 四川 0 2 0 32 34山东 0 5 0 14 19河北 0 7 0 2 9河南 0 2 0 5 7湖北 0 11 0 13 24
11 四川 0 1 2 28 31山东 0 3 0 3 6河北 0 3 3 9 15河南 0 10 7 5 22湖北 0 5 7 4 16
12 四川 0 0 12 28 40山东 0 0 4 2 6河北 0 0 5 0 5河南 0 2 19 1 22湖北 0 0 20 0 20
All 35 190 214 781 1220
入门pandas—数据透视与交叉表相关推荐
- crosstab交叉表_数据透视之交叉表 crosstab()
共1866字,阅读时间4分钟 点击上方蓝色字体关注公众号 1 回顾 昨天总结了Python的69个内置函数,回看: Python 69个内置函数分类总结 这些内置函数无论何时,我们都可以任意调用 ...
- pandas 数据透视表
pandas 数据透视表及逆透视 主要参数说明 pd.pivot_table(df,index= [] ,columns= [] ,values = [] , aggfunc={"Quant ...
- Pandas简明教程:八、Pandas数据透视表
透视表(pivot)是由微软发明的一个概念,1993年微软注册了PivotTable这一商标,而他们又在2020年正式撤销了注册. 关于透视表的话题随便搜搜就是一大堆,而有些地方可能都吹得很神了.透视 ...
- Pandas数据分析15——pandas数据透视表和交叉表
参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对数据框也可以像excel一样进行数据透视表整合之类的操作.主要是针对分类数据进行操作,还可以计算数值型 ...
- pandas数据透视表
pivot_table创建数据透视表 类似excel的数据透视表,可以实现一些groupby完成不了的操作 常用参数使用 # 第一个参数data表示我们要传入的数据,index表示索引,columns ...
- 对比Excel,学习pandas数据透视表
Excel中做数据透视表 ① 选中整个数据源: ② 依次点击"插入"-"数据透视表" ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然后根据实际需求,从 ...
- python数据透视、有的value不能同时输出_python – Pandas数据透视表ValueError:索引包含重复的条目,无法重新整形...
我有一个如下所示的数据帧(前3行): Sample_Name Sample_ID Sample_Type IS Component_Name IS_Name Component_Group_Name ...
- 学习pandas数据透视表
1.excel中做数据透视表 1)步骤如下 ① 选中整个数据源: ② 依次点击"插入"-"数据透视表" ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然 ...
- 27 pandas 数据透视
文章目录 pivot_table 函数 1.index需要聚合的列名,默认情况下聚合所有数据值的列 2.values在结果透视的行上进行分组的列名或其它分组键[就是透视表里显示的列] 3.column ...
- python数据透视表计数去除重复_如何从pandas数据透视表中删除重复值?
因此,我试图将excel的一组指令复制到python中.问题是我对excel和正在发生的事情知之甚少.在 我有一个数据帧:no. name corrected no. corrected name 0 ...
最新文章
- STM32开发 -- 串口详解
- HDU3255(线段树+扫描线)
- mysql 5.7.25 的安装与 安装错误修改 适用于5.7解压版
- 由C过渡到C++-入门知识点
- 深入研究.NET 5的开放式遥测
- python之工作举例:通过复制NC文件来造数据
- 电大计算机网络技术基础,电大--2016年电大 计算机与网络技术基础小抄已排版.doc...
- 中国互联网史是一部流氓史
- 【Flink】报错 KryoException ConcurrentModificationException StackOverflowError
- html div 球形,CSS3球形
- 怎么用python扫描主机_python 扫描内网存活主机
- 【学习记录贴】#3——校园二维和三维电子地图制作
- 景区门票怎么在线上渠道分销?
- 颜色匹配 opencv版
- 八个笑话,八个人生哲理
- PlayStation5上手体验
- 滚动轴承特征频率计算推导过程
- 14、jmeter+badboy 录制脚本方式(2)
- 【食品化学与营养】第一章 绪论 笔记
- jzoj4024 [佛山市选2015]石子游戏