pandas資料分組和聚合操作

2021-08-01 14:07:33 字數 2127 閱讀 5062

《python for data analysis》

dataframe可以在其行(axis=0)或列(axis=1)上進行分組。然後,將乙個函式應用到各個分組並產生新值。最後,所有這些函式的執行結果會被合併到最終的結果物件中去。

groupby的size方法可以返回乙個含有分組大小的series。

for (k1,k2), group

in df.groupby(['key1','key2']):

print k1,k2

print

group

df.groupby(['key1','key2'])[['data2']].mean()

只需將字典或series傳給groupby即可。

people.groupby(len).sum()#根據人名的長度進行分組

層次化索引資料,根據索引級別進行聚合,通過level關鍵字傳入級別編號或名稱。

df.groupby(level='cty',axis=1).count()

經過優化的groupby方法

函式名說明

count

分組中非na值得數量

sum非na值的和

mean

非na值的平均值

median

非na值的算術平均數

std、var

無偏(分母為n-1)標準差和方差

min、max

非na值的最小值和最大值

prod

非na值的積

first、last

第乙個和最後乙個非na值

對於上述描述統計方法,可以將函式名以字串的形式傳入agg方法。例如:grouped.agg(['mean', 'std'])

如果要使用自己的聚合函式,只需將其傳入aggregate或agg方法即可

def

peak_to_peak

(arr):

return arr.max() - arr.min()

grouped.agg(peak_to_peak)

面向列的多函式應用,可以對不同的列使用不同的聚合函式或者一次應用多個函式。

grouped.agg(['mean', 'std', peak_to_peak])  # 1

grouped.agg([('foo', 'mean'), ('bar', np.std)]) # 2

functions = ['count', 'mean', 'max']

result = grouped['tip', 'bill'].agg(functions) # 3

grouped.agg() # 4

transform會將乙個函式應用到各個分組,然後將結果放置到適當的位置上。如果各個分組產生的是乙個標量值,則該值就會被廣播出去。

一般性的「拆分-應用-合併」

根據乙個或多個鍵對資料進行聚合,並根據行和列上的分組鍵將資料分配到各個矩形區域。

tips.pivot_table('tip_pct', index=['time', 'size', 'smoker'],

columns='day', aggfunc='mean', fill_value=0)

引數名說明values

待聚合的列的名稱。預設所有列

rows

用於分組的列名或者其他分組鍵,出現在結果透視表的行

cols

用於分組的列名或者其他分組鍵,出現在結果透視表的列

aggfunc

聚合函式或函式列表,預設「mean」。可以是任何對groupby有效的函式

fill_value

用於替換結果表中缺失值

margins

新增行/列小計和總計,預設為false

是一種用於計算分組頻率的特殊透視表。

pd.crosstab([tips.time, tips.day], tips.smoker, margins=true)

pandas 分組聚合

綜合使用 資料鏈結 統計每個國家的星巴克的數量 按照單字段聚合 codeing utf 8 import pandas as pd import numpy as np df pd.read csv data starbucks store worldwide.csv 按國家進行分組後會有很多列 然...

pandas聚合運算,分組運算

分組運算,先根據一定規則拆分後的資料,然後對資料進行聚合運算,如前面見到的 mean sum 等就是聚合的例子。聚合時,拆分後的第乙個索引指定的資料都會依次傳給聚合函式進行運算。最後再把運算結果合併起來,生成最終結果。先生成乙個dataframe 用key1的索引分類再求平均 df.groupby ...

pandas 高階處理 分組與聚合

分組與聚合通常是分析資料的一種方式,通常與一些統計函式一起使用,檢視資料的分組情況 想一想其實剛才的交叉表與透視表也有分組的功能,所以算是分組的一種形式,只不過他們主要是計算次數或者計算比例!看其中的效果 案例 不同顏色的不同筆的 資料 col pd.dataframe color object p...