簡介
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/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現!