Python中pandas透视表pivot_table功能详解(⾮常简单易懂)
⼀⽂看懂pandas的透视表pivot_table
⼀、概述
1.1 什么是透视表?
透视表是⼀种可以对数据动态排布并且分类汇总的表格格式。或许⼤多数⼈都在Excel使⽤过数据透视表,也体会到它的强⼤功能,⽽在pandas中它被称作pivot_table。
1.2 为什么要使⽤pivot_table?
灵活性⾼,可以随意定制你的分析计算要求
脉络清晰易于理解数据
操作性强,报表神器
python是做什么的通俗易懂的⼆、如何使⽤pivot_table
⾸先读取数据,数据集是⽕箭队当家球星James Harden某⼀赛季⽐赛数据作为数据集进⾏讲解。。
先看⼀下官⽅⽂档中pivot_table的函数体:
pivot操作是如何进⾏。
2.1 读取数据
1. import pandas as pd
2. import numpy as np
3. df = pd.read_csv('h:/James_Harden.csv',encoding='utf8')
4. df.tail()
数据格式如下:
2.2 Index
每个pivot_table必须拥有⼀个index,如果想查看哈登对阵每个队伍的得分,⾸先我们将对⼿设置为index:
pd.pivot_table(df,index=[u'对⼿'])
对⼿成为了第⼀层索引,还想看看对阵同⼀对⼿在不同主客场下的数据,试着将对⼿与胜负与主客场都设置为index,其实就变成为了两层索引
pd.pivot_table(df,index=[u'对⼿',u'主客场'])
试着交换下它们的顺序,数据结果⼀样:
pd.pivot_table(df,index=[u'主客场',u'对⼿'])
看完上⾯⼏个操作,Index就是层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段,所以在进⾏pivot之前你也需要⾜够了解你的数据。
2.3 Values
通过上⾯的操作,我们获取了james harden在对阵对⼿时的所有数据,⽽Values可以对需要的计算数据进⾏筛选,如果我们只需要james harden 在主客场和不同胜负情况下的得分、篮板与助攻三项数据:
pd.pivot_table(df,index=[u'主客场',u'胜负'],values=[u'得分',u'助攻',u'篮板'])
2.4 Aggfunc
aggfunc参数可以设置我们对数据聚合时进⾏的函数操作。
当我们未设置aggfunc时,它默认aggfunc='mean'计算均值。我们还想要获得james harden在主客场和不同胜负情况下的总得分、总篮板、总助攻时:pd.pivot_table(df,index=[u'主客场',u'胜负'],values=[u'得分',u'助攻',u'篮板'],aggfunc=[np.an])
2.5 Columns
Columns类似Index可以设置列层次字段,它不是⼀个必要参数,作为⼀种分割数据的可选⽅式。
1. #fill_value填充空值,margins=True进⾏汇总
2. pd.pivot_table(df,index=[u'主客场'],columns=[u'对⼿'],values=[u'得分'],aggfunc=[np.sum],fill_value=0,margins=1)
现在我们已经把关键参数都介绍了⼀遍,下⾯是⼀个综合的例⼦:
table=pd.pivot_table(df,index=[u'对⼿',u'胜负'],columns=[u'主客场'],values=[u'得分',u'助攻',u'篮板'],aggfunc=[np.mean],fill_value=0)
结果如下:
aggfunc也可以使⽤dict类型,如果dict中的内容与values不匹配时,以dict中为准。
table=pd.pivot_table(df,index=[u'对⼿',u'胜负'],columns=[u'主客场'],values=[u'得分',u'助攻',u'篮板'],aggfunc={u'得分':np.mean, u'助攻':[min, max, np.mean]},fill_value=0)
结果就是助攻求min,max和mean,得分求mean,⽽篮板没有显⽰。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论