使用povit_table函数创建透视表

  1. 准备数据

准备数据meal_order_info.csv,并将meal_order_info.csv数据放到Linux本地/course/DataAnalyze/data目录。

  1. 使用povit_table函数创建透视表
  1. 使用订单详情表制作简单透视表,通过设定index参数示例,如代码 41所示。

代码 41 使用订单号作为透视表索引

In[1]:

import pandas as pd

import numpy as np

import os

os.chdir(‘/course/DataAnalyze/data’)

detail= pd.read_csv ('meal_order_detail1.csv')

detailPivot = pd.pivot_table(detail[['order_id','counts','amounts']],index = 'order_id')

print('以order_id作为分组键创建的订单透视表为:\n',detailPivot.head())

Out[1]:

以 order_id 作为分组键创建的订单透视表为:

amounts    counts

order_id

137       32.333333  1.500000

165       52.944444  1.166667

166       48.200000  1.400000

171       36.285714  1.428571

177       34.250000  1.000000

  1. 由结果可以看出在不特殊指定聚合函数aggfunc时,会默认使用numpy.mean进行聚合运算,numpy.mean会自动过滤掉非数值类型数据。可以通过指定aggfunc参数修改聚合函数,示例如代码 42所示。

代码 42 修改透视表的聚合函数

In[2]:

detailPivot1 = pd.pivot_table(detail[['order_id','counts','amounts']],

index = 'order_id',aggfunc = np.sum)

print('以order_id作为分组键创建的订单销量与售价总和透视表为:\n',detailPivot1.head())

Out[2]:

以 order_id 作为分组键创建的订单销量与售价总和透视表为:

amounts  counts

order_id

137           194       9

165           953      21

166           241       7

171           254      10

177           137       4

  1. 和groupby方法分组的时候相同,pivot_table函数在创建透视表的时候分组键index可以有多个,示例如代码 43所示。

代码 43 使用订单号和菜品名称作为透视表索引

In[3]:

detailPivot2 = pd.pivot_table(detail[['order_id','dishes_name','counts','amounts']],

index = ['order_id','dishes_name'],aggfunc = np.sum)

print('以order_id和dishes_name作为分组键创建的订单销量与售价总和透视表为:\n',

detailPivot2.head())

Out[3]:

以 order_id 和 dishes_name 作为分组键创建的订单销量与售价总和透视表为:

amounts  counts

order_id dishes_name

137      农夫山泉NFC果汁100%橙汁        6       1

凉拌菠菜                  27       1

番茄炖牛腩                 35       1

白饭/小碗                  1       4

西瓜胡萝卜沙拉               26       1

  1. 通过设置columns参数,指定列分组,示例如代码 44所示。

代码 44 指定菜品名称为列分组键

In[3]:

detailPivot2 = pd.pivot_table(detail[['order_id','dishes_name','counts','amounts']],

index = 'order_id',columns = 'dishes_name',aggfunc = np.sum)

print('以order_id和dishes_name作为行列分组键创建的透视表前5行4列为:\n',

detailPivot2.iloc[:5,:4])

Out[3]:

以 order_id 和 dishes_name 作为行列分组键创建的透视表前 5 行 4 列为:

amounts

dishes_name  42度海之蓝  北冰洋汽水  38度剑南春  50度古井贡酒

order_id

137             NaN     NaN     NaN     NaN

165             NaN     NaN    80.0     NaN

166             NaN     NaN     NaN     NaN

171             NaN     NaN     NaN     NaN

177             NaN     NaN     NaN     NaN

  1. 当全部数据列数很多时,只想要显示自己关心的列,可以通过指定values参数来实现,如代码 45所示。

代码 45 指定某些列制作透视表

In[4]:

detailPivot4 = pd.pivot_table(detail[['order_id','dishes_name','counts','amounts']],

index = 'order_id', values = 'counts', aggfunc = np.sum)

print('以order_id作为行分组键counts作为值创建的透视表前5行为:\n',

detailPivot4.head())

Out[4]:

以order_id作为行分组键counts作为值创建的透视表前5行为:

counts

order_id

1002         7.0

1003        10.0

1004        17.0

1008         5.0

1011        10.0

  1. 通过代码 45可以看出,当某些数据不存在时,会自动填充NaN,因此可以指定fill_value参数,表示当存在缺失值时,以指定数值进行填充,如代码 46所示。

代码 46 对透视表中的缺失值进行填充

In[5]:

detailPivot5 = pd.pivot_table(detail[['order_id','dishes_name','counts','amounts']],

index = 'order_id',columns = 'dishes_name',

aggfunc = np.sum,fill_value = 0)

print('空值填0后以order_id和dishes_name为行列分组键创建透视表前5行4列为:\n',

detailPivot5.iloc[:5,:4])

Out[5]:

空值填0后以order_id和dishes_name为行列分组键创建透视表前5行4列为:

amounts

dishes_name  42度海之蓝北冰洋汽水  38度剑南春  50度古井贡酒

order_id

1002              0       0       0       0

1003              0       0       0       0

1004              0       0       0       0

1008              0       0       0       0

1011             99       0       0       0

  1. 此外,还可以可以更改margins参数,查看汇总数据,如代码 47所示。

代码 47 透视表上添加汇总数据

In[6]:

detailPivot6 = pd.pivot_table(detail[['order_id','dishes_name','counts','amounts']],

index = 'order_id',columns = 'dishes_name',

aggfunc = np.sum,fill_value = 0,margins = True)

print('添加margins后以order_id和dishes_name为分组键的透视表前5行后4列为:\n',

detailPivot6.iloc[:5,-4:])

Out[6]:

添加margins后以order_id和dishes_name为分组键的透视表前5行后4列为:

counts

dishes_name黄油曲奇饼干黄花菜炒木耳黑米恋上葡萄   All

order_id

1002           0.0    0.0    0.0   7.0

1003           0.0    0.0    0.0  10.0

1004           0.0    1.0    0.0  17.0

1008           0.0    0.0    0.0   5.0

1011           0.0    0.0    0.0  10.0

数据挖掘技术-使用povit_table函数创建透视表相关推荐

  1. 第2关:Pandas创建透视表和交叉表

    任务描述 本关任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间.每个星期下的小费总和情况. 相关知识 透视表 透视表是各种电子表格程序和其他数据分析软 ...

  2. Pandas 统计分析基础 笔记5 _任务4.5 创建透视表与交叉表

    文章目录 pandas__任务4.5 创建透视表与交叉表 4.5 创建透视表与交叉表 代码4-67 使用订单号作为透视表索引制作透视表 代码 4-68 修改聚合函数后的透视表 代码 4-69 使用订单 ...

  3. 4.5 创建透视表与交叉表

    4.5 创建透视表与交叉表 4.5.1利用pivot_table函数可以实现透视表 pivot_table函数的常用参数及其说明 4.5.2 使用crosstab函数创建交叉表 crosstab函数的 ...

  4. R创建透视表(Pivot Tables)

    R创建透视表(Pivot Tables) 目录 R创建透视表(Pivot Tables) 透视表(Pivot Tables) R创建透视表

  5. java excel 透视_Java在Excel中创建透视表方法解析

    本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具-Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并 ...

  6. excel 2010创建透视表时提示内存资源不足

    excel 2010创建透视表时提示内存资源不足 我的系统是win7 32位 4G内存 求解!网上也搜了好多试过 也不行............................ 本文转自xinrenb ...

  7. pandas使用pivot_table函数构建透视表:index参数指定聚合的行索引、没有指定values参数则默认对所有数值列进行聚合、聚合函数为均值(mean)

    pandas使用pivot_table函数构建透视表:index参数指定聚合的行索引.没有指定values参数则默认对所有数值列进行聚合.聚合函数为均值(mean) 目录

  8. pandas使用pivot_table函数构建透视表:index指定聚合的行索引、columns指定聚合的列索引、aggfunc使用列表指定多个聚合函数(形成复合列索引)

    pandas使用pivot_table函数构建透视表:index参数指定聚合的行索引.columns参数指定聚合的列索引.values参数指定需要进行聚合的数值数据列.aggfunc使用列表指定多个聚 ...

  9. java 数据透视表 组件_Java在Excel中创建透视表方法解析

    本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具-Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并 ...

最新文章

  1. 2022秋招算法岗卷成人间地狱!高薪惹眼,招录比100:1
  2. eclipse下java.lang.OutOfMemoryError: PermGen space解决方法
  3. 酒鬼随机漫步(一个矢量类)
  4. 工作总结:文件对话框的分类(C++)
  5. 阿里专家杜万:Java响应式编程,一文全面解读
  6. 用了5年Excel,换了这个神奇的报表工具,不禁感叹:国产真香
  7. 不同数据库的自增代码
  8. k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
  9. LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
  10. @JsonSerialize的使用
  11. python数字保留两位_Python 鲜为人知的数值格式化
  12. 损失函数——交叉熵由来
  13. win7笔记本电脑做wifi热点
  14. loadRunner之Linux环境下安装负载机
  15. Delphi SM2/SM4国密算法
  16. Unity中Scale详解
  17. 70个JavaScript面试题集锦,内含解答,自测 JS 掌握程度
  18. matlab 产生均值为5,如何用matlab 产生 均值为0,方差为5的高斯噪声
  19. 学计算机之路写一篇作文,我的学吉他之路作文范文四篇
  20. 21杭电计算机考研回忆录

热门文章

  1. 信息技术用计算机写字的教案,黔教版信息技术三年级下册第9课《用计算机写字》教案2.doc...
  2. GC垃圾回收算法三种方式
  3. 学完python再学Java顺利吗,学完python再学Java要多久
  4. QCon全球企业开发大会在中国的三年发展总结
  5. 新一轮5G建设招标开启
  6. Java使用高德地图获取行驶距离等信息
  7. 肩部三角肌介绍:肌肉英文名称和图示
  8. 好心分手-----不要失去的时候才懂得珍惜
  9. 仅售99美元!英伟达发布最小AI计算机Jetson Nano
  10. ryu实例---自学习交换机