pandas的透视表pivot_table

其它参考文章:https://blog.csdn.net/mingkoukou/article/details/82870960

pandas的透视表pivot_table类似于EXCEL中的透视表

DataFrame.pivot_table(self, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False)
# https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot_table.html

 

假设有如下格式的数据表(df)

 

主要参数1:Index

【就是透视表的行】

Index就是层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段如果想查看对阵每个队伍的得分,首先我们将对手设置为index

import pandas as pd
import numpy as np

pd.pivot_table(df,index=['对手'])

对手成为了第一层索引,还想看看对阵同一对手在不同主客场下的数据,就将对手与主客场都设置为index,其实就变成为了两层索引

pd.pivot_table(df,index=['对手','主客场'])

 

试着交换下它们的顺序,数据结果一样:

pd.pivot_table(df,index=['主客场','对手'])

 

主要参数2:Values

【就是透视表里单元格显示的值】

Values可以对需要的计算数据进行筛选

如果我们只需要在主客场和不同胜负情况下的得分、篮板与助攻三项数据:

pd.pivot_table(df,index=['主客场','胜负'],values=['得分','助攻','篮板'])

 

主要参数3: Aggfunc

【就是透视表里单元格的值的聚合方式:均值、求和、计数等】

aggfunc参数可以设置我们对数据聚合时进行的函数操作。

当我们未设置aggfunc时,它默认aggfunc='mean'计算均值。我们还想要获得在主客场和不同胜负情况下的总得分、总篮板、总助攻时:

pd.pivot_table(df,index=['主客场','胜负'],values=['得分','助攻','篮板'],aggfunc=[np.sum,np.mean])

 

主要参数4:Columns

【就是透视表的列】

Columns类似Index可以设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式。

  1.  #fill_value填充空值,margins=True进行汇总

  2.  pd.pivot_table(df,index=['主客场'],columns=['对手'],values=['得分'],aggfunc=[np.sum],fill_value=0,margins=1)

 

综合例子

现在我们已经把关键参数都介绍了一遍,下面是一个综合的例子:

table=pd.pivot_table(df,index=['对手','胜负'],columns=['主客场'],values=['得分','助攻','篮板'],aggfunc=[np.mean],fill_value=0)

结果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值