pandas-10 pd.pivot_table()透视表功能

和excel一样,pandas也有一个透视表的功能,具体demo如下:

import numpy as np
import pandas as pd
from pandas import Series, DataFrame #显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100) df = pd.read_excel('./sales-funnel.xlsx')
print(df.head())
'''
Account Name Rep Manager \
0 714466 Trantow-Barrows Craig Booker Debra Henley
1 714466 Trantow-Barrows Craig Booker Debra Henley
2 714466 Trantow-Barrows Craig Booker Debra Henley
3 737550 Fritsch, Russel and Anderson Craig Booker Debra Henley
4 146832 Kiehn-Spinka Daniel Hilton Debra Henley Product Quantity Price Status
0 CPU 1 30000 presented
1 Software 1 10000 presented
2 Maintenance 2 5000 pending
3 CPU 1 35000 declined
4 CPU 2 65000 won
''' print(pd.pivot_table(df, index=['Name']))
'''
Account Price Quantity
Name
Barton LLC 740150 35000 1.000000
Fritsch, Russel and Anderson 737550 35000 1.000000
Herman LLC 141962 65000 2.000000
Jerde-Hilpert 412290 5000 2.000000
Kassulke, Ondricka and Metz 307599 7000 3.000000
Keeling LLC 688981 100000 5.000000
Kiehn-Spinka 146832 65000 2.000000
Koepp Ltd 729833 35000 2.000000
Kulas Inc 218895 25000 1.500000
Purdy-Kunde 163416 30000 1.000000
Stokes LLC 239344 7500 1.000000
Trantow-Barrows 714466 15000 1.333333
对名字进行了去重,将每个人的销售记录取进行统计,上例是求了均值。
这是由aggfunc参数来决定的。
''' print(pd.pivot_table(df, index=['Name'], aggfunc='sum'))
'''
Account Price Quantity
Name
Barton LLC 740150 35000 1
Fritsch, Russel and Anderson 737550 35000 1
Herman LLC 141962 65000 2
Jerde-Hilpert 412290 5000 2
Kassulke, Ondricka and Metz 307599 7000 3
Keeling LLC 688981 100000 5
Kiehn-Spinka 146832 65000 2
Koepp Ltd 1459666 70000 4
Kulas Inc 437790 50000 3
Purdy-Kunde 163416 30000 1
Stokes LLC 478688 15000 2
Trantow-Barrows 2143398 45000 4
''' print(pd.pivot_table(df, index=['Name', 'Rep', 'Manager']))
'''
Account ... Quantity
Name Rep Manager ...
Barton LLC John Smith Debra Henley 740150 ... 1.000000
Fritsch, Russel and Anderson Craig Booker Debra Henley 737550 ... 1.000000
Herman LLC Cedric Moss Fred Anderson 141962 ... 2.000000
Jerde-Hilpert John Smith Debra Henley 412290 ... 2.000000
Kassulke, Ondricka and Metz Wendy Yule Fred Anderson 307599 ... 3.000000
Keeling LLC Wendy Yule Fred Anderson 688981 ... 5.000000
Kiehn-Spinka Daniel Hilton Debra Henley 146832 ... 2.000000
Koepp Ltd Wendy Yule Fred Anderson 729833 ... 2.000000
Kulas Inc Daniel Hilton Debra Henley 218895 ... 1.500000
Purdy-Kunde Cedric Moss Fred Anderson 163416 ... 1.000000
Stokes LLC Cedric Moss Fred Anderson 239344 ... 1.000000
Trantow-Barrows Craig Booker Debra Henley 714466 ... 1.333333
''' print(pd.pivot_table(df, index=['Manager', 'Rep']))
# manager 和 rep 之间 存在 一对多的 关系
'''
Account Price Quantity
Manager Rep
Debra Henley Craig Booker 720237.0 20000.000000 1.250000
Daniel Hilton 194874.0 38333.333333 1.666667
John Smith 576220.0 20000.000000 1.500000
Fred Anderson Cedric Moss 196016.5 27500.000000 1.250000
Wendy Yule 614061.5 44250.000000 3.000000
''' print(pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price', 'Quantity']))
'''
Price Quantity
Manager Rep
Debra Henley Craig Booker 20000.000000 1.250000
Daniel Hilton 38333.333333 1.666667
John Smith 20000.000000 1.500000
Fred Anderson Cedric Moss 27500.000000 1.250000
Wendy Yule 44250.000000 3.000000
''' print(pd.pivot_table(df, index=['Manager', 'Rep'], values=['Price', 'Quantity'], columns=['Product']))
'''
Price ... Quantity
Product CPU Maintenance ... Monitor Software
Manager Rep ...
Debra Henley Craig Booker 32500.0 5000.0 ... NaN 1.0
Daniel Hilton 52500.0 NaN ... NaN 1.0
John Smith 35000.0 5000.0 ... NaN NaN
Fred Anderson Cedric Moss 47500.0 5000.0 ... NaN 1.0
Wendy Yule 82500.0 7000.0 ... 2.0 NaN 由以上输出可以看出,当column指定为product之后,price和quantity进行了细分,将每个product的详情列出。
另外还可以设置一个fill_value的参数,可以将nan填充为某个值。
''' '''
总结:
使用透视表之前,需要对原始数据有一个大概的了解,这样生成的透视表才能够有意义。
'''

pandas-10 pd.pivot_table()透视表功能的更多相关文章

  1. pandas之groupby分组与pivot_table透视表

    zhuanzi: https://blog.csdn.net/qq_33689414/article/details/78973267 pandas之groupby分组与pivot_table透视表 ...

  2. Excel学习 -- 数据透视表功能

    Excel -- 数据透视表基础 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关.    之所以称为数据透视表,是因 ...

  3. python pandas使用数据透视表

    1) 官网啰嗦这一堆, pandas.pivot_table函数中包含四个主要的变量,以及一些可选择使用的参数.四个主要的变量分别是数据源data,行索引index,列columns,和数值value ...

  4. 【Excle数据透视表】如何移动数据透视表的位置

    数据透视表创建完成了,现在需要将它移动到D5位置,如何移动呢? 解决办法 通过"移动数据透视表"功能实现数据透视表的位置移动 步骤1 单击数据透视表任意单元格→数据透视表工具→分析 ...

  5. Python中pandas透视表pivot_table功能详解(非常简单易懂)

    一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表? 透视表是一种可以对数据动态排布并且分类汇总的表格格式.或许大多数人都在Excel使用过数据透视表,也体会到它的强大 ...

  6. Pandas透视表(pivot_table)详解

    介绍 也许大多数人都有在Excel中使用数据透视表的经历,其实Pandas也提供了一个类似的功能,名为pivot_table.虽然pivot_table非常有用,但是我发现为了格式化输出我所需要的内容 ...

  7. pandas实现excel中的数据透视表和Vlookup函数功能

    在孩子王实习中做的一个小工作,方便整理数据. 目前这几行代码是实现了一个数据透视表和匹配的功能,但是将做好的结果写入了不同的excel中, 如何实现将结果连续保存到同一个Excel的同一个工作表中?还 ...

  8. 小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. pandas常用操作详解(复制别人的)——数据透视表操作:pivot_table()

    原文链接:https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html 一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表 ...

随机推荐

  1. Java的string类为什么是不可变的

    最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类 ...

  2. Maven 项目中依赖的搜索顺序

    Maven 项目中依赖的搜索顺序 http://www.manongjc.com/article/13422.html 执行过程中使用 -e -X 查看详细的搜索地址: 1,中央仓库,这是默认的仓库 ...

  3. JMH java基准测试

    Measure, don’t guess! JMH适用场景 JMH只适合细粒度的方法测试 原理 编译时会生成一些测试代码,一般都会继承你的类 maven依赖 <dependencies> ...

  4. HIVE出现Read past end of RLE integer from compressed stream Stream for column 1 kind LENGTH position: 359 length: 359 range: 0错误

    错误日志 Diagnostic Messages for this Task: Error: java.io.IOException: java.io.IOException: java.io.EOF ...

  5. Android Studio的下载、安装与配置

    1 下载 下载地址:http://www.android-studio.org/index.php ☟这里下载的是3.1.2版本 2 安装与配置 2.1 初步安装 默认就可以,点击红框内按钮依次进行安 ...

  6. Android之WebRTC介绍

    参考自:Introduction to WebRTC on AndroidAndroid之WebRTC介绍 WebRTC被誉为是web长期开源开发的一个新启元,是近年来web开发的最重要创新.WebR ...

  7. delete some elements from the head of slice without new memory

    a = []int{1, 2, 3} a = append(a[:0], a[1:]...) // 删除开头1个元素 a = append(a[:0], a[N:]...) // 删除开头N个元素

  8. layui 复选框checkbox 实现全选全选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. EasyNVR摄像机网页无插件直播方案H5前端构建之:关于接口调用常见的一些问题(401 Unauthorized)

    背景分析 最近在使用EasyNVR的过程中,很多小伙伴咨询关于接口调用的问题,初步判断应该是遇到权限问题(401 Unauthorized).EasyNVR为第三方系统和应用提供了标准的API接口,方 ...

  10. python入门和杂识

    1需要理解的一些概念 1.C语言编译完就是机器码,机器码可以直接在处理器上执行. 2.CPU可以直接读取机器码. 3.Python是用C写的. 4.Python解释器会把代码内容读到内存里,通过Pyt ...