一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python中pandas透視表pivot

 天上飛雞 2020-12-18

 一文看懂pandas的透視表pivot_table

一、概述

1.1 什么是透視表?

透視表是一種可以對(duì)數(shù)據(jù)動(dòng)態(tài)排布并且分類(lèi)匯總的表格格式。或許大多數(shù)人都在Excel使用過(guò)數(shù)據(jù)透視表,也體會(huì)到它的強(qiáng)大功能,而在pandas中它被稱(chēng)作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ù)

  1.  import pandas as pd
  2.  import numpy as np
  3.  df = pd.read_csv('h:/James_Harden.csv',encoding='utf8')
  4.  df.tail()

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

2.2 Index

每個(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.3 Values

通過(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.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類(lèi)似Index可以設(shè)置列層次字段,它不是一個(gè)必要參數(shù),作為一種分割數(shù)據(jù)的可選方式。

  1.  #fill_value填充空值,margins=True進(jìn)行匯總
  2.  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類(lèi)型,如果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)有顯示。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    一区二区福利在线视频| 国产在线一区中文字幕 | 久久久精品区二区三区| 免费啪视频免费欧美亚洲| 亚洲国产一级片在线观看| 久久福利视频在线观看| 日韩国产亚洲欧美另类| 视频一区中文字幕日韩| 一区二区三区四区亚洲另类| 国产精品日韩欧美一区二区| 国产欧美性成人精品午夜| 午夜小视频成人免费看| 少妇在线一区二区三区| 亚洲欧洲在线一区二区三区| 国产高清一区二区白浆| 国产精品成人一区二区在线| 国产av一二三区在线观看| 国产精品免费精品一区二区| 亚洲欧美日本国产有色| 日韩欧美国产精品自拍| 日本在线 一区 二区| 亚洲精选91福利在线观看| 性感少妇无套内射在线视频| 国产精品福利精品福利| 欧美日韩免费黄片观看| 精品人妻av区波多野结依| 91熟女大屁股偷偷对白| 人妻内射精品一区二区| 国产熟女一区二区不卡| 久久91精品国产亚洲| 欧美成人高清在线播放| 日韩蜜桃一区二区三区| 午夜精品久久久99热连载| 国产精品欧美激情在线播放| 激情偷拍一区二区三区视频| 国产麻豆视频一二三区| 国产精品熟女乱色一区二区| 国产精品蜜桃久久一区二区| 99久久精品午夜一区二区| 亚洲最大的中文字幕在线视频| 东京热一二三区在线免|