天天看點

Pandas進階教程之:GroupBy用法

簡介

pandas中的df資料類型可以像資料庫表格一樣進行groupby操作。通常來說groupby操作可以分為三部分:分割資料,應用變換和和合并資料。

本文将會詳細講解pandas中的groupby操作。

分割資料

分割資料的目的是将df分割成為一個個的group。為了進行groupby操作,在建立df的時候需要指定相應的label:

預設情況下,groupby的軸是x軸。可以一列group,也可以多列group:

在0.24版本中,如果我們有多index,可以從中選擇特定的index進行group:

get_group 可以擷取分組之後的資料:

預設情況下,nan資料會被排除在groupby之外,通過設定 dropna=false 可以允許nan資料:

groupby對象有個groups屬性,它是一個key-value字典,key是用來分類的資料,value是分類對應的值。

對于多級index對象,groupby可以指定group的index層級:

group第一級:

group第二級:

group的周遊

得到group對象之後,我們可以通過for語句來周遊group:

如果是多字段group,group的名字是一個元組:

聚合操作

分組之後,就可以進行聚合操作:

對于多index資料來說,預設傳回值也是多index的。如果想使用新的index,可以添加 as_index = false:

上面的效果等同于reset_index

grouped.size() 計算group的大小:

grouped.describe() 描述group的資訊:

下面是通用的聚合方法:

函數

描述

<code>mean()</code>

平均值

<code>sum()</code>

求和

<code>size()</code>

計算size

<code>count()</code>

group的統計

<code>std()</code>

标準差

<code>var()</code>

方差

<code>sem()</code>

均值的标準誤

<code>describe()</code>

統計資訊描述

<code>first()</code>

第一個group值

<code>last()</code>

最後一個group值

<code>nth()</code>

第n個group值

<code>min()</code>

最小值

<code>max()</code>

最大值

可以同時指定多個聚合方法:

可以重命名:

namedagg 可以對聚合進行更精準的定義,它包含 column 和aggfunc 兩個定制化的字段。

或者直接使用一個元組:

通過給agg方法傳入一個字典,可以指定不同的列使用不同的聚合:

轉換操作

轉換是将對象轉換為同樣大小對象的操作。在資料分析的過程中,經常需要進行資料的轉換操作。

可以接lambda操作:

填充na值:

過濾操作

filter方法可以通過lambda表達式來過濾我們不需要的資料:

apply操作

有些資料可能不适合進行聚合或者轉換操作,pandas提供了一個 <code>apply</code> 方法,用來進行更加靈活的轉換操作。

可以外接函數:

本文已收錄于 http://www.flydean.com/11-python-pandas-groupby/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現!