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写入xml文件的方法
May 08 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
基于python if 判断选择结构的实例详解
May 06 Python
Python模块、包(Package)概念与用法分析
May 31 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
Vue.js实现分页查询功能
2020/11/15 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
在Python中移动目录结构的方法
2016/01/31 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
python关于变量名的基础知识点
2020/03/03 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
消防安全宣传标语
2014/06/07 职场文书
男性健康日的活动方案
2014/08/18 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
面试通知单大全
2015/04/20 职场文书
学校计划生育责任书
2015/05/09 职场文书
让生命充满爱观后感
2015/06/08 职场文书
七年级话题作文之执着
2019/11/19 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL