其它參考文章: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可以設定列層次字段,它不是一個必要參數,作為一種分割資料的可選方式。
- #fill_value填充空值,margins=True進行彙總
- 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)
結果如下: