天天看點

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)

pandas的透視表pivot_table

主要參數1:Index

【就是透視表的行】

Index就是層次字段,要通過透視表擷取什麼資訊就按照相應的順序設定字段如果想檢視對陣每個隊伍的得分,首先我們将對手設定為index:

import pandas as pd
import numpy as np

pd.pivot_table(df,index=['對手'])
           
pandas的透視表pivot_table

對手成為了第一層索引,還想看看對陣同一對手在不同主客場下的資料,就将對手與主客場都設定為index,其實就變成為了兩層索引

pd.pivot_table(df,index=['對手','主客場'])
           
pandas的透視表pivot_table

試着交換下它們的順序,資料結果一樣:

pd.pivot_table(df,index=['主客場','對手'])
           
pandas的透視表pivot_table

主要參數2:Values

【就是透視表裡單元格顯示的值】

Values可以對需要的計算資料進行篩選

如果我們隻需要在主客場和不同勝負情況下的得分、籃闆與助攻三項資料:

pd.pivot_table(df,index=['主客場','勝負'],values=['得分','助攻','籃闆'])
           
pandas的透視表pivot_table

主要參數3: Aggfunc

【就是透視表裡單元格的值的聚合方式:均值、求和、計數等】

aggfunc參數可以設定我們對資料聚合時進行的函數操作。

當我們未設定aggfunc時,它預設aggfunc='mean'計算均值。我們還想要獲得在主客場和不同勝負情況下的總得分、總籃闆、總助攻時:

pd.pivot_table(df,index=['主客場','勝負'],values=['得分','助攻','籃闆'],aggfunc=[np.sum,np.mean])
           
pandas的透視表pivot_table

主要參數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)
pandas的透視表pivot_table

綜合例子

現在我們已經把關鍵參數都介紹了一遍,下面是一個綜合的例子:

table=pd.pivot_table(df,index=['對手','勝負'],columns=['主客場'],values=['得分','助攻','籃闆'],aggfunc=[np.mean],fill_value=0)
           

結果如下:

pandas的透視表pivot_table