1. 程式人生 > >Pandas 基礎(13) - Crosstab 交叉列表取值

Pandas 基礎(13) - Crosstab 交叉列表取值

~~ ring 介紹 第一個 多看 clas 列表 ctu rac

這小節的題目看起來還挺晦澀的, crosstab 是 pandas 的一個函數, 作用還蠻強大的, 一起來看一下吧~~~

首先還是先引入一個例子文件:

import pandas as pd
df = pd.read_excel(‘/Users/rachel/Sites/pandas/py/pandas/13_crosstab/survey.xls‘)
df

輸出:
技術分享圖片
好, 下面看一下 crosstab 的功力:

pd.crosstab(df.Nationality, df.Handedness)

輸出:
技術分享圖片
crosstab 第一個參數是列, 第二個參數是行. 還可以添加第三個參數:

pd.crosstab(df.Sex, df.Handedness, margins = True)

輸出:
技術分享圖片

同時, 行和列都可以是復合的:

pd.crosstab(df.Sex, [df.Handedness, df.Nationality], margins = True)

輸出:
技術分享圖片

pd.crosstab([df.Nationality, df.Sex], df.Handedness, margins = True)

輸出:
技術分享圖片

ok, 上面介紹了 crosstab() 函數最基本的功能, 其實它還可以通過很多參數的配置實現不同的功能. 這裏分享一個小技巧, 把光標點到 crosstab 單詞書, 按下 shift + tab 鍵, 就可以彈出對這個函數的詳情, 主要是參數的使用說明, 發現真的還有好多參數啊, 下面再選兩個講一下:

求百分比:

pd.crosstab(df.Sex, df.Handedness, normalize=‘index‘)

輸出:
技術分享圖片

求指定列的平均值:

import numpy as np
pd.crosstab(df.Sex, df.Handedness, values=df.Age, aggfunc=np.average)

輸出:
技術分享圖片
最後一個參數看起來有點多, 有點復雜, 那也是因為我們剛開始接觸 crosstab 函數, 所以可以結合上面介紹的方法, 打開函數說明, 對照著裏面的參數用法, 多看幾遍 就懂了. 如果還有不明白, 就給我留言吧~~~~

Pandas 基礎(13) - Crosstab 交叉列表取值