簡介
使用pivot
使用stack
使用melt
使用pivot tables
使用crosstab
get_dummies
使用pandas的pivot方法可以将df進行旋轉變換,本文将會詳細講解pivot的秘密。
pivot用來重組df,使用指定的index,columns和values來對現有的df進行重構。
看一個pivot的例子:
通過pivot變化,新的df使用foo中的值作為index,使用bar的值作為columns,zoo作為對應的value。
再看一個時間變化的例子:
如果剩餘的value,多于一列的話,每一列都會有相應的columns值:
通過選擇value2,可以得到相應的子集:
stack是對df進行轉換,将列轉換為新的内部的index。
上面我們将列a,b轉成了index。
unstack是stack的反向操作,是将最内層的index轉換為對應的列。
舉個具體的例子:
預設情況下unstack是unstack最後一個index,我們還可以指定特定的index值:
預設情況下stack隻會stack一個level,還可以傳入多個level:
上面等價于:
melt指定特定的列作為标志變量,其他的列被轉換為行的資料。并放置在新的兩個列:variable和value中。
上面例子中我們指定了兩列first和last,這兩列是不變的,height和weight被變換成為行資料。
舉個例子:
雖然pivot可以進行df的軸轉置,pandas還提供了 pivot_table() 在轉置的同時可以進行數值的統計。
pivot_table() 接收下面的參數:
data: 一個df對象
values:一列或者多列待聚合的資料。
index: index的分組對象
columns: 列的分組對象
aggfunc: 聚合的方法。
先建立一個df:
下面是幾個聚合的例子:
添加margins=true會添加一個all列,表示對所有的列進行聚合:
crosstab 用來統計表格中元素的出現次數。
crosstab可以接收兩個series:
還可以使用normalize來指定比例值:
還可以normalize行或者列:
可以指定聚合方法:
get_dummies可以将df中的一列轉換成為k列的0和1組合:
get_dummies 和 cut 可以進行結合用來統計範圍内的元素:
get_dummies還可以接受一個df參數:
最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 公衆号:「程式那些事」,懂技術,更懂你!