数据挖掘技术-使用povit_table函数创建透视表
使用povit_table函数创建透视表
- 准备数据
准备数据meal_order_info.csv,并将meal_order_info.csv数据放到Linux本地/course/DataAnalyze/data目录。
- 使用povit_table函数创建透视表
- 使用订单详情表制作简单透视表,通过设定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 |
- 由结果可以看出在不特殊指定聚合函数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 |
- 和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 |
- 通过设置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 |
- 当全部数据列数很多时,只想要显示自己关心的列,可以通过指定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 |
- 通过代码 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 |
- 此外,还可以可以更改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函数创建透视表相关推荐
- 第2关:Pandas创建透视表和交叉表
任务描述 本关任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间.每个星期下的小费总和情况. 相关知识 透视表 透视表是各种电子表格程序和其他数据分析软 ...
- Pandas 统计分析基础 笔记5 _任务4.5 创建透视表与交叉表
文章目录 pandas__任务4.5 创建透视表与交叉表 4.5 创建透视表与交叉表 代码4-67 使用订单号作为透视表索引制作透视表 代码 4-68 修改聚合函数后的透视表 代码 4-69 使用订单 ...
- 4.5 创建透视表与交叉表
4.5 创建透视表与交叉表 4.5.1利用pivot_table函数可以实现透视表 pivot_table函数的常用参数及其说明 4.5.2 使用crosstab函数创建交叉表 crosstab函数的 ...
- R创建透视表(Pivot Tables)
R创建透视表(Pivot Tables) 目录 R创建透视表(Pivot Tables) 透视表(Pivot Tables) R创建透视表
- java excel 透视_Java在Excel中创建透视表方法解析
本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具-Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并 ...
- excel 2010创建透视表时提示内存资源不足
excel 2010创建透视表时提示内存资源不足 我的系统是win7 32位 4G内存 求解!网上也搜了好多试过 也不行............................ 本文转自xinrenb ...
- pandas使用pivot_table函数构建透视表:index参数指定聚合的行索引、没有指定values参数则默认对所有数值列进行聚合、聚合函数为均值(mean)
pandas使用pivot_table函数构建透视表:index参数指定聚合的行索引.没有指定values参数则默认对所有数值列进行聚合.聚合函数为均值(mean) 目录
- pandas使用pivot_table函数构建透视表:index指定聚合的行索引、columns指定聚合的列索引、aggfunc使用列表指定多个聚合函数(形成复合列索引)
pandas使用pivot_table函数构建透视表:index参数指定聚合的行索引.columns参数指定聚合的列索引.values参数指定需要进行聚合的数值数据列.aggfunc使用列表指定多个聚 ...
- java 数据透视表 组件_Java在Excel中创建透视表方法解析
本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具-Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并 ...
最新文章
- 2022秋招算法岗卷成人间地狱!高薪惹眼,招录比100:1
- eclipse下java.lang.OutOfMemoryError: PermGen space解决方法
- 酒鬼随机漫步(一个矢量类)
- 工作总结:文件对话框的分类(C++)
- 阿里专家杜万:Java响应式编程,一文全面解读
- 用了5年Excel,换了这个神奇的报表工具,不禁感叹:国产真香
- 不同数据库的自增代码
- k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
- LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
- @JsonSerialize的使用
- python数字保留两位_Python 鲜为人知的数值格式化
- 损失函数——交叉熵由来
- win7笔记本电脑做wifi热点
- loadRunner之Linux环境下安装负载机
- Delphi SM2/SM4国密算法
- Unity中Scale详解
- 70个JavaScript面试题集锦,内含解答,自测 JS 掌握程度
- matlab 产生均值为5,如何用matlab 产生 均值为0,方差为5的高斯噪声
- 学计算机之路写一篇作文,我的学吉他之路作文范文四篇
- 21杭电计算机考研回忆录