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中使用smtplib和email模块发送邮件实例
Apr 22 Python
python用户管理系统
Mar 13 Python
Python实现在某个数组中查找一个值的算法示例
Jun 27 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
Django实现文件上传下载功能
Oct 06 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
Python中免验证跳转到内容页的实例代码
Oct 23 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
如何在Python中创建二叉树
Mar 30 Python
python爬取豆瓣电影TOP250数据
May 23 Python
python开发制作好看的时钟效果
May 02 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP多个版本的分析解释
2011/07/21 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
深入密码加salt原理的分析
2013/06/06 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
js实现导航吸顶效果
2017/02/24 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
webpack4简单入门实例
2018/09/06 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
Python中拆分字符串的操作方法
2019/07/23 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
会走路的树教学反思
2014/02/20 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
爱国口号
2014/06/19 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
教师节表彰会主持词
2015/07/06 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle