一文搞懂Python中pandas透視表pivot_table功能
一文看懂pandas的透視表pivot_table
一、概述
1.1 什麼是透視表?
透視表是一種可以對數據動態排佈並且分類匯總的表格格式。或許大多數人都在Excel使用過數據透視表,也體會到它的強大功能,而在pandas中它被稱作pivot_table。
1.2 為什麼要使用pivot_table?
- 靈活性高,可以隨意定制你的分析計算要求
- 脈絡清晰易於理解數據
- 操作性強,報表神器
二、如何使用pivot_table
首先讀取數據,數據集是火箭隊當傢球星James Harden某一賽季比賽數據作為數據集進行講解。數據地址。
先看一下官方文檔中pivot_table的函數體:pandas.pivot_table – pandas 0.21.0 documentation
pivot_table(data,values=None,index=None,columns=None,aggfunc=’mean’,fill_value=None,margins=False,dropna=True,margins_name=’All’)
pivot_table有四個最重要的參數index、values、columns、aggfunc,本文以這四個參數為中心講解pivot操作是如何進行。
2.1 讀取數據
- import pandas as pd
- import numpy as np
- df = pd.read_csv(‘h:/James_Harden.csv’,encoding=’utf8′)
- df.tail()
數據格式如下:
2.2Index
每個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.3Values
通過上面的操作,我們獲取瞭james harden在對陣對手時的所有數據,而Values可以對需要的計算數據進行篩選,如果我們隻需要james harden在主客場和不同勝負情況下的得分、籃板與助攻三項數據:
pd.pivot_table(df,index=[u’主客場’,u’勝負’],values=[u’得分’,u’助攻’,u’籃板’])
2.4Aggfunc
aggfunc參數可以設置我們對數據聚合時進行的函數操作。
當我們未設置aggfunc時,它默認aggfunc=’mean’計算均值。我們還想要獲得james harden在主客場和不同勝負情況下的總得分、總籃板、總助攻時:
pd.pivot_table(df,index=[u’主客場’,u’勝負’],values=[u’得分’,u’助攻’,u’籃板’],aggfunc=[np.sum,np.mean])
2.5Columns
Columns類似Index可以設置列層次字段,它不是一個必要參數,作為一種分割數據的可選方式。
#fill_value填充空值,margins=True進行匯總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,而籃板沒有顯示。
到此這篇關於一文搞懂Python中pandas透視表pivot_table功能詳解的文章就介紹到這瞭,更多相關pandas透視表pivot_table內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python+Pandas實現數據透視表
- Python實現數據透視表詳解
- python 用pandas實現數據透視表功能
- 一文搞懂Pandas數據透視的4個函數的使用
- Python pandas軸旋轉stack和unstack的使用說明