天天看點

Pandas進階教程之:Dataframe的重排和旋轉

簡介

使用pivot

使用stack

使用melt

使用pivot tables

使用crosstab

get_dummies

使用pandas的pivot方法可以将df進行旋轉變換,本文将會詳細講解pivot的秘密。

pivot用來重組df,使用指定的index,columns和values來對現有的df進行重構。

看一個pivot的例子:

Pandas進階教程之:Dataframe的重排和旋轉

通過pivot變化,新的df使用foo中的值作為index,使用bar的值作為columns,zoo作為對應的value。

再看一個時間變化的例子:

如果剩餘的value,多于一列的話,每一列都會有相應的columns值:

通過選擇value2,可以得到相應的子集:

stack是對df進行轉換,将列轉換為新的内部的index。

Pandas進階教程之:Dataframe的重排和旋轉

上面我們将列a,b轉成了index。

unstack是stack的反向操作,是将最内層的index轉換為對應的列。

Pandas進階教程之:Dataframe的重排和旋轉

舉個具體的例子:

預設情況下unstack是unstack最後一個index,我們還可以指定特定的index值:

Pandas進階教程之:Dataframe的重排和旋轉

預設情況下stack隻會stack一個level,還可以傳入多個level:

上面等價于:

melt指定特定的列作為标志變量,其他的列被轉換為行的資料。并放置在新的兩個列:variable和value中。

Pandas進階教程之:Dataframe的重排和旋轉

上面例子中我們指定了兩列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參數:

最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 公衆号:「程式那些事」,懂技術,更懂你!