這小節的題目看起來還挺晦澀的, 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 函式, 所以可以結合上面介紹的方法, 開啟函式說明, 對照著裡面的引數用法, 多看幾遍 就懂了.
本作品採用《CC 協議》,轉載必須註明作者和本文連結