Pandas透視表和交叉表

2021-09-02 20:41:43 字數 2143 閱讀 8757

透視表

透視表(pivot table)是各種電子**程式和其他資料分析軟體中一種常見的資料彙總工具。它根據乙個或多個鍵對資料進行聚合,並根據行和列上得分組建將資料分配到各個矩形區域中。在python和pandas中,可以通過本章所介紹的groupby功能以及(能夠利用層次化索引的)重塑運算製作透視表。dataframe有乙個pivot_table方法,此外還有乙個頂級的pandas.pivot_table函式。除了能為groupby提供便利之外,pivot_table還可以新增分項小計(也叫margins)。

首先匯入tips資料集 ,新增一項tips[『tip_pct』] = tips[『tip』] / tips[『total_bill』]

回到如上圖所示的小費資料集,假設我想要根據***和smoker計算分組平均數(pivot_table的預設聚合型別),並將***和smoker放到行上:

結果是一樣的

現在假設我們只想聚合tip_pct和size,而且想根據day進行分組。我將smoker放到列上,把day放到行上:

可以看到,pivot_table()函式給我們提供了很多引數,用來選擇用那些資料建立透視表,以及調整建立透視表之後的行和列。

還可以對這個表作進一步處理,傳入margins=true新增加分小計。這將會新增標籤為all的行和列,其值對應於單個等級中所有資料的分組統計。在下面這個例子中,all值為平均數:不單獨考慮菸民與非菸民(all列),不單獨考慮行分組兩個級別中的任何單項(all行)。換句話說:就是下面的all行和右邊的all列只統計對應的列和行。

交叉表:crosstab

交叉表(cross-tabulation, 簡稱crosstab)是一種用於計算分組頻率的特殊透視表。下面這個範例資料很典型,取自交叉表的wikipedia頁:

可以看到,crosstab()的前兩個引數可以是陣列、series或陣列列表。再比如對小費資料集:

總結透視表pivot_table()是一種進行分組統計的函式,引數aggfunc決定統計型別;

交叉表crosstab()是一種特殊的pivot_table(),專用於計算分組頻率。

pandas 交叉表與透視表

利用pivot table函式可以實現透視表,pivot table 函式的常用引數及其使用格式如下。pands.pivot table data,values none,index none,columns none,aggfunc mean fill value none,margins fal...

python 透視表和交叉表

pivot tables and cross tabulation python和pandas中,可以通過本章所介紹的groupby功能以及 能夠利 層次化索引的 重塑運算製作透視表。dataframe有 個pivot table 法,此外還有 個頂級的pandas.pivot table函 數。除...

pandas基礎 part5 透視表與交叉表

學習筆記,這個筆記以例子為主。開發工具 spyder 透視表 pivot table 是各種電子 程式和其他資料分析軟體中一種常見的資料彙總工具。它根據乙個或多個鍵對資料進行分組聚合,並對每個分組進行資料彙總。以a與b做分組彙總資料,針對d的每個值列級分組統計,統計每個分組下c列的最大值,並新增行 ...