python 用pandas实现数据透视表功能


Posted in Python onDecember 21, 2020

透视表是一种可以对数据动态排布并且分类汇总的表格格式。对于熟练使用 excel 的伙伴来说,一定很是亲切!

pd.pivot_table() 语法:

pivot_table(data,  # DataFrame
      values=None,  # 值
      index=None,  # 分类汇总依据
      columns=None,  # 列
      aggfunc='mean',  # 聚合函数
      fill_value=None,  # 对缺失值的填充
      margins=False,  # 是否启用总计行/列
      dropna=True,  # 删除缺失
      margins_name='All'  # 总计行/列的名称
      )

1、销量数据的透视

python 用pandas实现数据透视表功能

1.1 读入数据

import os
import numpy as np
import pandas as pd

file_name = os.path.join(path, 'Excel_test.xls')
df = pd.read_excel(io=file_name,  # 工作簿路径
          sheetname='透视表',  # 工作表名称
          skiprows=1,  # 要忽略的行数
          parse_cols='A:D'  # 读入的列
         )
df

python 用pandas实现数据透视表功能

1.2 数据透视

# 透视数据
df_p = df.pivot_table(index='客户名称',  # 透视的行,分组依据
           values='销量',  # 值
           aggfunc='sum'  # 聚合函数
           )
# 对透视表进行降序排列
df_p = df_p.sort_values(by='销量',  # 排序依据
            ascending=False  # 是否升序排列
            )
# 设置数值格式
df_p = df_p.round({'销量': 0}).astype('int')

# 添加列
ks = df_p['销量']//100
df_p['重要程度'] = ['★'*k for k in ks]
df_p

python 用pandas实现数据透视表功能

1.3 重新设置图示表的索引

df_p['客户名称'] = df_p.index
df_p.set_index(keys=['重要程度', '客户名称'])

python 用pandas实现数据透视表功能

注:以上操作从理论和实践方面看都没什么问题,但模仿 excel 的痕迹浓重了些,更 python 的操作是用 groupby-applay 的方法。

2 用 分组聚合 实现数据透视

grouped = df.groupby(by='客户名称')
grouped['销量'].agg('sum')

python 用pandas实现数据透视表功能

2.1 实现目标格式的透视表

# 分类汇总
df_p = df.groupby(by='客户名称'  # 分类
         ).agg('sum'  # 汇总
           ).sort_values(by='销量', ascending=False  # 排序
                  ).round({'销量': 0}  # 设置精度
                     ).astype('int')  # 数据类型转换

# 添加列
ks = df_p['销量']//100
df_p['重要程度'] = ['★'*k for k in ks]
df_p['客户名称'] = df_p.index
# 层次索引
df_p.set_index(keys=['重要程度', '客户名称'])

python 用pandas实现数据透视表功能

软件信息:

python 用pandas实现数据透视表功能

以上就是python 用pandas实现数据透视表功能的详细内容,更多关于python pandas实现数据透视表的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python base64 decode incorrect padding错误解决方法
Jan 08 Python
python计算方程式根的方法
May 07 Python
Python 中 Meta Classes详解
Feb 13 Python
Python聊天室程序(基础版)
Apr 01 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
Python使用正则表达式实现爬虫数据抽取
Aug 17 Python
python实现企业微信定时发送文本消息的实例代码
Nov 25 Python
用Python简陋模拟n阶魔方
Apr 17 Python
python 生成正态分布数据,并绘图和解析
Dec 21 #Python
python statsmodel的使用
Dec 21 #Python
Python 实现集合Set的示例
Dec 21 #Python
Python 实现二叉查找树的示例代码
Dec 21 #Python
如何利用Python matplotlib绘制雷达图
Dec 21 #Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 #Python
python opencv肤色检测的实现示例
Dec 21 #Python
You might like
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php验证手机号码
2015/11/11 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
python使用KNN算法手写体识别
2018/02/01 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
任意存:BOXFUL
2018/05/21 全球购物
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
授权委托书范本
2014/04/03 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
节约用水的口号
2014/06/20 职场文书
走群众路线剖析材料
2014/10/09 职场文书
党员转正党支部意见
2015/06/02 职场文书
python 调用js的四种方式
2021/04/11 Python
Pandas加速代码之避免使用for循环
2021/05/30 Python