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访问类中docstring注释的实现方法
May 04 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
flask中过滤器的使用详解
Aug 01 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
Python日志logging模块功能与用法详解
Apr 09 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
Python 里最强的地图绘制神器
Mar 01 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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学习笔记之 函数声明(二)
2011/06/09 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python魔法方法功能与用法简介
2019/04/04 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
基于Django实现日志记录报错信息
2019/12/17 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
服装设计师求职信
2014/06/04 职场文书
高中军训感想
2015/08/07 职场文书