一文搞懂Python中pandas透視表pivot_table功能
一文看懂pandas的透視表pivot_table
一、概述
1.1 什么是透視表?
透視表是一種可以對(duì)數(shù)據(jù)動(dòng)態(tài)排布并且分類匯總的表格格式。或許大多數(shù)人都在Excel使用過(guò)數(shù)據(jù)透視表,也體會(huì)到它的強(qiáng)大功能,而在pandas中它被稱作pivot_table。
1.2 為什么要使用pivot_table?
- 靈活性高,可以隨意定制你的分析計(jì)算要求
- 脈絡(luò)清晰易于理解數(shù)據(jù)
- 操作性強(qiáng),報(bào)表神器
二、如何使用pivot_table
首先讀取數(shù)據(jù),數(shù)據(jù)集是火箭隊(duì)當(dāng)家球星James Harden某一賽季比賽數(shù)據(jù)作為數(shù)據(jù)集進(jìn)行講解。數(shù)據(jù)地址。
先看一下官方文檔中pivot_table的函數(shù)體: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有四個(gè)最重要的參數(shù)index、values、columns、aggfunc,本文以這四個(gè)參數(shù)為中心講解pivot操作是如何進(jìn)行。
2.1 讀取數(shù)據(jù)
- ?import pandas as pd
- ?import numpy as np
- ?df = pd.read_csv('h:/James_Harden.csv',encoding='utf8')
- ?df.tail()
數(shù)據(jù)格式如下:
2.2Index
每個(gè)pivot_table必須擁有一個(gè)index,如果想查看哈登對(duì)陣每個(gè)隊(duì)伍的得分,首先我們將對(duì)手設(shè)置為index:
pd.pivot_table(df,index=[u'對(duì)手'])
對(duì)手成為了第一層索引,還想看看對(duì)陣同一對(duì)手在不同主客場(chǎng)下的數(shù)據(jù),試著將對(duì)手與勝負(fù)與主客場(chǎng)都設(shè)置為index,其實(shí)就變成為了兩層索引
pd.pivot_table(df,index=[u'對(duì)手',u'主客場(chǎng)'])
試著交換下它們的順序,數(shù)據(jù)結(jié)果一樣:
pd.pivot_table(df,index=[u'主客場(chǎng)',u'對(duì)手'])
看完上面幾個(gè)操作,Index就是層次字段,要通過(guò)透視表獲取什么信息就按照相應(yīng)的順序設(shè)置字段,所以在進(jìn)行pivot之前你也需要足夠了解你的數(shù)據(jù)。
2.3Values
通過(guò)上面的操作,我們獲取了james harden在對(duì)陣對(duì)手時(shí)的所有數(shù)據(jù),而Values可以對(duì)需要的計(jì)算數(shù)據(jù)進(jìn)行篩選,如果我們只需要james harden在主客場(chǎng)和不同勝負(fù)情況下的得分、籃板與助攻三項(xiàng)數(shù)據(jù):
pd.pivot_table(df,index=[u'主客場(chǎng)',u'勝負(fù)'],values=[u'得分',u'助攻',u'籃板'])
2.4Aggfunc
aggfunc參數(shù)可以設(shè)置我們對(duì)數(shù)據(jù)聚合時(shí)進(jìn)行的函數(shù)操作。
當(dāng)我們未設(shè)置aggfunc時(shí),它默認(rèn)aggfunc='mean'計(jì)算均值。我們還想要獲得james harden在主客場(chǎng)和不同勝負(fù)情況下的總得分、總籃板、總助攻時(shí):
pd.pivot_table(df,index=[u'主客場(chǎng)',u'勝負(fù)'],values=[u'得分',u'助攻',u'籃板'],aggfunc=[np.sum,np.mean])
2.5Columns
Columns類似Index可以設(shè)置列層次字段,它不是一個(gè)必要參數(shù),作為一種分割數(shù)據(jù)的可選方式。
#fill_value填充空值,margins=True進(jìn)行匯總pd.pivot_table(df,index=[u'主客場(chǎng)'],columns=[u'對(duì)手'],values=[u'得分'],aggfunc=[np.sum],fill_value=0,margins=1)
現(xiàn)在我們已經(jīng)把關(guān)鍵參數(shù)都介紹了一遍,下面是一個(gè)綜合的例子:
table=pd.pivot_table(df,index=[u'對(duì)手',u'勝負(fù)'],columns=[u'主客場(chǎng)'],values=[u'得分',u'助攻',u'籃板'],aggfunc=[np.mean],fill_value=0)
結(jié)果如下:
aggfunc也可以使用dict類型,如果dict中的內(nèi)容與values不匹配時(shí),以dict中為準(zhǔn)。
table=pd.pivot_table(df,index=[u'對(duì)手',u'勝負(fù)'],columns=[u'主客場(chǎng)'],values=[u'得分',u'助攻',u'籃板'],aggfunc={u'得分':np.mean,u'助攻':[min, max, np.mean]},fill_value=0)
結(jié)果就是助攻求min,max和mean,得分求mean,而籃板沒(méi)有顯示。
到此這篇關(guān)于一文搞懂Python中pandas透視表pivot_table功能詳解的文章就介紹到這了,更多相關(guān)pandas透視表pivot_table內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python基礎(chǔ)--除法(/,//,%)的應(yīng)用說(shuō)明
這篇文章主要介紹了python基礎(chǔ)--除法(/,//,%)的應(yīng)用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python使用 Beanstalkd 做異步任務(wù)處理的方法
這篇文章主要介紹了Python使用 Beanstalkd 做異步任務(wù)處理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04如何使用python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組
python處理數(shù)據(jù)文件的途徑有很多種,下面這篇文章主要給大家介紹了關(guān)于如何使用python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11Python實(shí)現(xiàn)端口復(fù)用實(shí)例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)端口復(fù)用實(shí)例代碼,需要的朋友可以參考下2014-07-07python刪掉重復(fù)行之drop_duplicates()用法示例
Pandas的drop_duplicates()方法用于從DataFrame中刪除重復(fù)的行,這篇文章主要給大家介紹了關(guān)于python刪掉重復(fù)行之drop_duplicates()用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08Python基礎(chǔ)學(xué)習(xí)之函數(shù)和代碼復(fù)用詳解
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率,下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)學(xué)習(xí)之函數(shù)和代碼復(fù)用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08人機(jī)交互程序 python實(shí)現(xiàn)人機(jī)對(duì)話
這篇文章主要為大家詳細(xì)介紹了人機(jī)交互程序,初步實(shí)現(xiàn)python人機(jī)對(duì)話,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11