使用Pandas创建数据透视表

本文转载自:蓝鲸的网站分析笔记

原文链接:使用Pandas创建数据透视表

目录

  • pandas.pivot_table()

    • 创建简单的数据透视表
    • 增加一个行维度(index)
    • 增加一个值变量(value)
    • 更改数值汇总方式
    • 增加数值汇总方式
    • 增加一个列维度(columns)
    • 增加多个列维度 
    • 增加数据汇总值

数据透视表是Excel中最常用的数据汇总工具,它可以根据一个或多个制定的维度对数据进行聚合。在python中同样可以通过pandas.pivot_table函数来实现这些功能。本篇文章将介绍 pandas.pivot_table函数与Excel数据透视表之间的联系,以及具体的使用方法。文章中的数据源来自Lending Club 2017-2011年的公开数据。

pandas数据透视表函数

pandas.pivot_table函数中包含四个主要的变量,以及一些可选择使用的参数。四个主要的变量分别是数据源data,行索引index,列columns,和数值values。可选择使用的参数包括数值的汇总 方式,NaN值的处理方式,以及是否显示汇总行数据等。下面是Pandas官网给出的函数说明。

我们将pandas.pivot_table函数与Excel的数据透视表界面做了一个对比,并用不同的颜色和连线画出了两者之间的联系。在其中可以发现pandas.pivot_table的行索引index,列,和数值分别对 应了Excel数据透视表中的行,列和值三个部分。在实际的操作中Excel是将字段拖拽到相应的字段区间中,而在pandas.pivot_table中只需要将字段的的名称输入到等号后面就可以了。下面我们 来看下pandas.pivot_table具体的使用方法。


首先导入需要使用的numpy和pandas功能库,numpy用于数值计算,Pandas是基于numpy构建的用于科学计算的功能库,pandas.pivot_table是Pandas库(pd)中的函数。然后读取Lending Club数据 ,并生成名为lc的数据表。

1
2
3
import pandas as pd
import numpy as np
lc=pd.DataFrame(pd.read_csv('LoanStats3a.csv',header=1))

创建简单的数据透视表

我们选择Lending Club数据表中的贷款期限和贷款总额字段来创建一个简单的数据透视表。按贷款期限维度对贷款总额进行聚合,将贷款期限字段(term)放在行索引lndex中,贷款总额字段 (loan_amnt)放在值values中,生成按不同贷款期限维度聚合的贷款总额数据。这里需要说明的是在默认情况下pandas.pivot_table对指标的汇总方式是计算平均值。 因此下面的表中显示的是不 同贷款期限的贷款平均值数据。这个简单的数据透视表只有一个维度和一个指标。下面我们将为这个数据透视表增加更多的维度和指标,并增加更多的指标汇总计算方式。

1
pd.pivot_table(lc,index=["term"],values=["loan_amnt"])

增加一个行维度(index)

在贷款期限的维度上增加贷款用户等级维度,创建一个双维度的数据透视表,在pandas.pivot_table的行索引index中增加贷款用户等级字段(grade)。这样在行索引维度index中共包含了两个维 度,主维度贷款期限(term)和次级维度贷款用户等级(grade)。指标是按不同贷款期限下贷款用户等级分布进行汇总贷款金额平均值。与之前相比指标数据经过次级维度的细分变的更加精细。

1
pd.pivot_table(lc,index=["term","grade"],values=["loan_amnt"])


通过调整pandas.pivot_table函数中不同维度的位置可以更改数据透视表中维度的层级,以及数据的显示方式。这里我们将前面代码行索引中两个字段位置互换,此时贷款用户等级(grade)成了主维度,贷款期限(term)变成了次级维度。

1
pd.pivot_table(lc,index=["grade","term"],values=["loan_amnt"])


增加一个值变量(value)

除了增加次级维度以外,还可以增加需要汇总的数据值。在前面数据透视表的基础上我们增加总利息字段作为第二个汇总值。方法与前面增加次级维度很相似,将需要增加的字段放在值values中即可。下面是具体的代码和生成的数据透视表,其中total_rec_int是新增的值values变量。这里需要再次说明的是,默认情况下pandas.pivot_table按平均值对数据进行汇总。

1
pd.pivot_table(lc,index=["grade","term"],values=["loan_amnt","total_rec_int"])


更改数值汇总方式

若要更改pandas.pivot_table对值values的汇总方式需要在代码中进行设置,下面将贷款总额和总利息字段的汇总方式改为求和。方法是在代码中加入aggfunc=np.sum。新生成的数据透视表中值字段的计算方式就由之前的平均值改为了求和值。

1
pd.pivot_table(lc,index=["grade","term"],values["loan_amnt","total_rec_int"],aggfunc=np.sum)


增加数值汇总方式

除了可以对值变量values计算平均值和求和以外,还可以进行计数。下面我们在上面数据透视表的基础上分别对贷款总额和总利息字段进行求和,平均值和技术的计算。具体方法是代码中增加以下内容aggfunc=[np.sum,np.mean,len]),aggfunc是汇总方式,np.sum表示求和,np.mean表示计算平均值,len表示计数。在下面新创建的数据透视表中可以看到,求和sum部分,平均值mean部
分和计数len部分的计算结果。

1
pd.pivot_table(lc,index=["grade","term"],values=["loan_amnt","total_rec_int"],aggfunc=[np.sum,np.mean,len])


如果数据表中包含有NaN值,并且在之前的清洗中没有进行处理,也可以在生成数据透视表的过程中进行处理或替换。在pandas.pivot_table函数中有两种处理NaN值的方式,第一种是将NaN值替换为0。第二种为放弃NaN值,也就是说包含有NaN值的数据条目不参加计算。这里我们使用第一种方法,将NaN值替换为0。具体方法是在代码中添加以下部分fill_value=0。

1
pd.pivot_table(lc,index=["grade","term"],values=["loan_amnt","total_rec_int"],aggfunc=[np.sum,np.mean,len],fill_value=0)

增加一个列维度(columns)

pandas.pivot_table函数也支持列维度。在Excel中需要将对应的字段拖到列区域中,在Pandas中的方法是增加列columns,并将对应的字段名称放在列columns变量的值中。下面是具体的代码,其中columns=[“home_ownership”]是新增加的部分,表示在数据表中增加列维度home_ownership。

1
pd.pivot_table(lc,index=["grade"],values=["loan_amnt"],columns=["home_ownership"],aggfunc=[np.sum],fill_value=0)

增加多个列维度

与行索引一样,列columns中也可以增加多个维度,方法与增加行维度和值一样,这里不再赘述。下面是具体的代码,其中columns=[“home_ownership”,”term”]是发生变化的部分,表示列中新增了贷款期限term维度。home_owership为主维度,term为次级维度。

1
pd.pivot_table(lc,index=["grade"],values=["loan_amnt"],columns=["home_ownership","term"],aggfunc=[np.sum],fill_value=0)

增加数据汇总值

pandas.pivot_table函数中的margins参数用于增加数据透视表的汇总值。默认情况下margins的状态为False。需要增加透视表的汇总值时将margins值改为True即可。此时数据透视表将显示不同维度下数据的汇总值。汇总值的计算方式以aggfunc的一致。换句话说,如果aggfunc中设置的是求和,那么汇总值也是求和值。

1
pd.pivot_table(lc,index=["grade"],values=["loan_amnt"],columns=["home_ownership","term"],aggfunc=[np.sum],fill_value=0,margins=True)


最后,我们总结下pandas.pivot_table函数与数据透视表的对应关系。将每部分以不同颜色进行区分,index对应了数据透视表中行的索引部分(浅蓝色),values对应了数值的部分(绿色),columns对应了列的部分,(橙色表示主维度,黄色表示次级维度),aggfunc对应了数值的计算方式(紫色),并显示数据透视表的最顶部进行说明(sum)。Margins对应了数据透视表中值汇总的部分 (深蓝色)。

转载于:https://www.cnblogs.com/stream886/p/6022125.html

【转载】使用Pandas创建数据透视表相关推荐

  1. [转载]VBA创建数据透视表

    Sub 透视表() Dim PTC As PivotCache Dim PVT As PivotTable Dim rng As Range Set rng = Sheet1.Range(" ...

  2. 【Excel 2013 数据透视表 学习】一、创建数据透视表

    1 数据透视表 是Excel中数据处理分析工具. 用途: 1. 快速分类汇总.比较大量数据. 2. 快速变化统计分析维度查看统计结果. 数据透视表不仅综合了数据排序.筛选.组合及分类汇总等数据分析方法 ...

  3. 合并计算+创建数据透视表+筛选+分类汇总

    一.合并计算 执行此操作的条件是,各项必须相同,且各项排列顺序要相同,例如,要合并上下学期成绩时,姓名排列顺序以及各科排列顺序都要相同才能将两张表的数据合并到另一张表中. 合并方法,单击合并计算,在弹 ...

  4. 动态新增表字段_制作动态的数据透视表(一):定义名称法创建数据透视表

    --施瓦辛格:没有跌倒过的人不会成功. 我们的日常工作中,会经常遇到一种情况:创建好数据透视表后,有其他被遗漏的数据内容需要重新插入到数据源后,有其他被遗漏的数据内容需要重新插入到数据源中:或者是需要 ...

  5. 职称计算机excel2015年,【2015年职称计算机Excel重点精讲:创建数据透视表】- 环球网校...

    [摘要]2015年职称计算机Excel重点精讲:创建数据透视表 利用Excel提供的数据透视表向导,可以很方便地建立数据透视表.以图8-1所示的年终津 贴分配表为例,要求统计各部门的津贴总和以及各部门 ...

  6. 如何创建数据透视表的方法

    内容提要:本文介绍excel中如何创建数据透视表的方法,并分为数据区域和列表区域来分别介绍,并给出数据透视表教程链接.对Excel感兴趣的朋友可加Excel学习交流群:284029260(www.it ...

  7. Excel数据透视表经典教程二《创建数据透视表》

    一.创建数据透视表 由上图:Ctrl+A选中图表,然后点击插入-点击数据透视表 选择在新/现有工作表中创建数据透视表 1.对不同品牌下的不同车型进行计数 2.查看不同品牌的收入是多少 3.将不同的地区 ...

  8. python多个sheet数据透视表_python 用pandas实现数据透视表功能

    透视表是一种可以对数据动态排布并且分类汇总的表格格式.对于熟练使用 excel 的伙伴来说,一定很是亲切! pd.pivot_table() 语法: pivot_table(data, # dataf ...

  9. 快学excel-VBA创建数据透视表

最新文章

  1. 计算机专业英语已经出版,欢迎关注
  2. 听说Attention与Softmax更配哦~
  3. 0网卡开启_中标麒麟Linux v7系统下设置双网卡bond或team绑定详细过程
  4. python获取app信息的库_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下...
  5. OpenMP对于嵌套循环应该添加多少个parallel for
  6. 四、处理表单数据 (基础教程4)
  7. 【步骤详解】畅捷通T+Cloud无代码集成钉钉群机器人示例
  8. 计算机网络技术超星尔雅章节检测,超星尔雅计算机网络技术第二章节测验答案...
  9. 报道|香港科大校友“盐马行”活动成功举办
  10. DIY无人机组装与飞控参数调试记录(DJI NAZA-LITE)
  11. Building QNX guests
  12. 报错:Warning: To load an ES module, set “type“: “module“ in the package.json or use the .mjs extension
  13. Python向左,数学向右:梅森素数
  14. STM32、51单片机如何使用USB转TTL烧写程序?
  15. 榛子外观缺陷视觉检测系统
  16. 织梦插件教程新老版本通用织梦插件大全
  17. 2021-3-26 米斯特安全团队视频笔记二(含PHP)
  18. RP Fiber Power 光孤子自频移效应
  19. 程序员的出路是什么?
  20. UE5第一人称射击游戏蓝图教程

热门文章

  1. 微型计算机原理与应用课件,微机原理与应用课件
  2. [ Oracle EBS ] 资产 摊销调整、累计折旧等介绍
  3. Linux用户态进程监控内存写排查踩内存
  4. pc端网页实现微信扫码登录
  5. 教程:微信公众号的链接如何提取出来?非常简单!
  6. HyperLynx(五)反射仿真
  7. 强化学习《蘑菇书 EasyRL第一章 概览》
  8. 边云协同的优点_与云端握手 是时候谈谈边云协同这个边缘计算新风向了
  9. python 实现图片添加文字水印
  10. 前额出现痘斑是肝脏含过多毒素所致(图)