Python中pandas透視表pivot_table功能詳解

Python中pandas透視表pivot_table功能詳解

一文看懂pandas的透視表pivot_table

一奸例、概述

1.1 什么是透視表穆趴?

透視表是一種可以對(duì)數(shù)據(jù)動(dòng)態(tài)排布并且分類匯總的表格格式虑粥」Ы穑或許大多數(shù)人都在Excel使用過數(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)行講解爹梁。

對(duì)手,勝負(fù),主客場(chǎng),命中,投籃數(shù),投籃命中率,3分命中率,籃板,助攻,得分
勇士,勝,客,10,23,0.435,0.444,6,11,27
國王,勝,客,8,21,0.381,0.286,3,9,27
小牛,勝,主,10,19,0.526,0.462,3,7,29
灰熊,負(fù),主,8,20,0.4,0.25,5,8,22
76人,勝,客,10,20,0.5,0.25,3,13,27
黃蜂,勝,客,8,18,0.444,0.4,10,11,27
灰熊,負(fù),客,6,19,0.316,0.222,4,8,20
76人,負(fù),主,8,21,0.381,0.429,4,7,29
尼克斯,勝,客,9,23,0.391,0.353,5,9,31
老鷹,勝,客,8,15,0.533,0.545,3,11,29
爵士,勝,主,19,25,0.76,0.875,2,13,56
騎士,勝,主,8,21,0.381,0.429,11,13,35
灰熊,勝,主,11,25,0.44,0.429,4,8,38
步行者,勝,客,9,21,0.429,0.25,5,15,26
猛龍,負(fù),主,8,25,0.32,0.273,6,11,38
太陽,勝,客,12,22,0.545,0.545,2,7,48
灰熊,勝,客,9,20,0.45,0.5,5,7,29
掘金,勝,主,6,16,0.375,0.143,8,9,21
尼克斯,勝,主,12,27,0.444,0.385,2,10,37
籃網(wǎng),勝,主,13,20,0.65,0.615,10,8,37
步行者,勝,主,8,22,0.364,0.333,8,10,29
湖人,勝,客,13,22,0.591,0.444,4,9,36
爵士,勝,客,8,19,0.421,0.333,5,3,29
開拓者,勝,客,16,29,0.552,0.571,8,3,48
鵜鶘,勝,主,8,16,0.5,0.4,1,17,26

下官方文檔中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ù)indexvalues提澎、columns姚垃、aggfunc,本文以這四個(gè)參數(shù)為中心講解pivot操作是如何進(jìn)行盼忌。

2.1 讀取數(shù)據(jù)

import pandas as pd
import numpy as np
df = pd.read_csv('James_Harden.csv',encoding='utf8')
df

數(shù)據(jù)格式如下:


2.2 Index

每個(gè)pivot_table必須擁有一個(gè)index积糯,如果想查看james harden對(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就是層次字段,要通過透視表獲取什么信息就按照相應(yīng)的順序設(shè)置字段祠乃,所以在進(jìn)行pivot之前你也需要足夠了解你的數(shù)據(jù)梦重。

2.3 Values

通過上面的操作,我們獲取了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.4 Aggfunc

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.5 Columns

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,maxmean,得分求mean,而籃板沒有顯示瞄桨。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末话速,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子芯侥,更是在濱河造成了極大的恐慌泊交,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柱查,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡唉工,警方通過查閱死者的電腦和手機(jī)研乒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淋硝,“玉大人雹熬,你說我怎么就攤上這事∫ド牛” “怎么了竿报?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長继谚。 經(jīng)常有香客問我烈菌,道長,這世上最難降的妖魔是什么花履? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任芽世,我火速辦了婚禮,結(jié)果婚禮上诡壁,老公的妹妹穿的比我還像新娘捂襟。我一直安慰自己,他們只是感情好欢峰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布葬荷。 她就那樣靜靜地躺著,像睡著了一般纽帖。 火紅的嫁衣襯著肌膚如雪宠漩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天懊直,我揣著相機(jī)與錄音扒吁,去河邊找鬼。 笑死室囊,一個(gè)胖子當(dāng)著我的面吹牛雕崩,可吹牛的內(nèi)容都是我干的魁索。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盼铁,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粗蔚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饶火,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤鹏控,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后肤寝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體当辐,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鲤看,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缘揪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡义桂,死狀恐怖找筝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澡刹,我是刑警寧澤呻征,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站罢浇,受9級(jí)特大地震影響陆赋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚷闭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一攒岛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胞锰,春花似錦灾锯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凌那,卻和暖如春兼雄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帽蝶。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工赦肋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓佃乘,卻偏偏與公主長得像囱井,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趣避,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容