pandas數(shù)據(jù)透視實(shí)例:商業(yè)交易表、全球游戲銷量表
1. 寬數(shù)據(jù)/窄數(shù)據(jù)的概念
寬數(shù)據(jù):在這樣一個(gè)表格中可以不斷增加Name

窄數(shù)據(jù):在這樣一個(gè)表格中可以不斷增加Date

兩者各有優(yōu)劣,也可相互轉(zhuǎn)換。
2. 數(shù)據(jù)透視表pivot
數(shù)據(jù)透視表是什么意思?可以先參考Excel中的闡述:使用數(shù)據(jù)透視表匯總數(shù)據(jù),可以方便地排列和匯總復(fù)雜數(shù)據(jù),以便進(jìn)一步查看詳細(xì)信息。

一個(gè)功能就是寬/窄數(shù)據(jù)的切換:(篩選、行變列、列變行、匯總值等,下文中將提到的pivot_table()函數(shù))

還有一個(gè)功能就是pivot的統(tǒng)計(jì)方式的相關(guān)功能(包括求和sum()、計(jì)數(shù)count()等):(下文中將提到的aggfunc參數(shù))


看一個(gè)Python示例:
導(dǎo)入數(shù)據(jù):商業(yè)交易表sales_by_employee.csv

聚合/匯總:pivot_table()(默認(rèn)為平均mean,還可以設(shè)為sum、count、max、median等)

指定為某一列:

將列設(shè)為Name:columns = "Name"

將NaN設(shè)為0:fill_value = 0
設(shè)置邊界的匯總:margins = True

可以用列表/字典傳入多個(gè):

3. 行列索引的互相移動(dòng)
列索引變行索引:.stack()


行索引變列索引:.unstack()
4. 寬數(shù)據(jù)變窄數(shù)據(jù)
寬數(shù)據(jù):全球游戲銷量表video_game_sales.csv

變成窄數(shù)據(jù):.melt()

使用pivot_table()直接聚合每個(gè)游戲所有地區(qū)的銷售總額:

5. 寬列表變窄數(shù)據(jù)
寬列表食譜:recipes.csv

將成分字符串拆分為列表:.split()

將列表形式的Series拆分為窄數(shù)據(jù)Series:.explode()
