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 相关文章推荐
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
Python第三方库的安装方法总结
Jun 06 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
分析python请求数据
Aug 19 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
详解python编译器和解释器的区别
Jun 24 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Python文件操作基础流程解析
Mar 19 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
Python闭包的定义和使用方法
Apr 11 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 ajax 分页类代码
2008/11/13 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue如何判断dom的class
2018/04/26 Javascript
ant design实现圈选功能
2019/12/17 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
使用Python的turtle模块画图的方法
2017/11/15 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
用python写PDF转换器的实现
2020/10/29 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
以下的初始化有什么区别
2013/12/16 面试题
节水口号标语
2014/06/19 职场文书
2016公司年会通知范文
2015/04/25 职场文书
资金申请报告范文
2015/05/14 职场文书
钱学森电影观后感
2015/06/04 职场文书
田径运动会通讯稿
2015/07/18 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
MySQL批量更新不同表中的数据
2022/05/11 MySQL