数据透视

原数据

             日期  部门 销售人员 所属区域    数量  金额  成本
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—数据透视与交叉表相关推荐

  1. crosstab交叉表_数据透视之交叉表 crosstab()

    共1866字,阅读时间4分钟  点击上方蓝色字体关注公众号 1 回顾 昨天总结了Python的69个内置函数,回看:  Python 69个内置函数分类总结  这些内置函数无论何时,我们都可以任意调用 ...

  2. pandas 数据透视表

    pandas 数据透视表及逆透视 主要参数说明 pd.pivot_table(df,index= [] ,columns= [] ,values = [] , aggfunc={"Quant ...

  3. Pandas简明教程:八、Pandas数据透视表

    透视表(pivot)是由微软发明的一个概念,1993年微软注册了PivotTable这一商标,而他们又在2020年正式撤销了注册. 关于透视表的话题随便搜搜就是一大堆,而有些地方可能都吹得很神了.透视 ...

  4. Pandas数据分析15——pandas数据透视表和交叉表

    参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对数据框也可以像excel一样进行数据透视表整合之类的操作.主要是针对分类数据进行操作,还可以计算数值型 ...

  5. pandas数据透视表

    pivot_table创建数据透视表 类似excel的数据透视表,可以实现一些groupby完成不了的操作 常用参数使用 # 第一个参数data表示我们要传入的数据,index表示索引,columns ...

  6. 对比Excel,学习pandas数据透视表

    Excel中做数据透视表 ① 选中整个数据源: ② 依次点击"插入"-"数据透视表" ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然后根据实际需求,从 ...

  7. python数据透视、有的value不能同时输出_python – Pandas数据透视表ValueError:索引包含重复的条目,无法重新整形...

    我有一个如下所示的数据帧(前3行): Sample_Name Sample_ID Sample_Type IS Component_Name IS_Name Component_Group_Name ...

  8. 学习pandas数据透视表

    1.excel中做数据透视表 1)步骤如下 ① 选中整个数据源: ② 依次点击"插入"-"数据透视表" ③ 选择在Excel中的哪个位置,插入数据透视表 ④ 然 ...

  9. 27 pandas 数据透视

    文章目录 pivot_table 函数 1.index需要聚合的列名,默认情况下聚合所有数据值的列 2.values在结果透视的行上进行分组的列名或其它分组键[就是透视表里显示的列] 3.column ...

  10. python数据透视表计数去除重复_如何从pandas数据透视表中删除重复值?

    因此,我试图将excel的一组指令复制到python中.问题是我对excel和正在发生的事情知之甚少.在 我有一个数据帧:no. name corrected no. corrected name 0 ...

最新文章

  1. STM32开发 -- 串口详解
  2. HDU3255(线段树+扫描线)
  3. mysql 5.7.25 的安装与 安装错误修改 适用于5.7解压版
  4. 由C过渡到C++-入门知识点
  5. 深入研究.NET 5的开放式遥测
  6. python之工作举例:通过复制NC文件来造数据
  7. 电大计算机网络技术基础,电大--2016年电大 计算机与网络技术基础小抄已排版.doc...
  8. 中国互联网史是一部流氓史
  9. 【Flink】报错 KryoException ConcurrentModificationException StackOverflowError
  10. html div 球形,CSS3球形
  11. 怎么用python扫描主机_python 扫描内网存活主机
  12. 【学习记录贴】#3——校园二维和三维电子地图制作
  13. 景区门票怎么在线上渠道分销?
  14. 颜色匹配 opencv版
  15. 八个笑话,八个人生哲理
  16. PlayStation5上手体验
  17. 滚动轴承特征频率计算推导过程
  18. 14、jmeter+badboy 录制脚本方式(2)
  19. 【食品化学与营养】第一章 绪论 笔记
  20. jzoj4024 [佛山市选2015]石子游戏

热门文章

  1. 台式计算机没有声音图标,台式电脑没声音,小扬声器图标也没有。
  2. 搭建智慧农业物联网云平台——基于阿里云物联网平台构建
  3. win10下安装php7.2的memcache扩展
  4. YOLOV5 Detetct.py 流程分析
  5. Win10企业版转专业版
  6. 定时任务:每隔30分钟执行一次脚本
  7. Sails基础之Controller层
  8. Matlab filter2、conv2报错:不支持N维数组
  9. uniapp如何引入全局js
  10. 知道今天是星期几java_java如何判断今天是星期几