天天看點

pandas聚合函數groupby

1.groupby聚合函數彙總

min()        最小值

max()      最大值

sum()       求和

mean()     平均數

std()         标準差

size()        按照groupby的值計算該值的個數 與count函數的差別在于,size函數會計算NAN值,而count函數不會計算NAN值

count()      計算個數

nunique()   去掉重複值後進行計數

df=pd.DataFrame({'user':['Alice','Tom','Bob','Alice','Bob','Alice'],'money':range(6)})

df.groupby(['user']).sum()

           

結果如下:

pandas聚合函數groupby
pandas聚合函數groupby

2.reset_index() 

 将groupby後的分組結果轉換為DataFrame對象,進而儲存。

這裡主要是針對多列進行分組後

pandas聚合函數groupby
pandas聚合函數groupby
pandas聚合函數groupby

最後可以看到通過reset_index後列名也平攤開了

3. agg(function) 

 對groupby後的某一列或者多列運用function函數,可同時作用于一個列或者多個列

def handle_transactions_data(name,data):
    pick_agg_cols={
        'purchase_amount':['sum'],
        'merchant_id':['count'],
        'installments':['sum'],
        'city_id':['count'],
        'merchant_category_id':['nunique'],
        'purchase_date':['min','max'],
        'card_id':['size']
        
    }
    data_grouped= data.groupby(data['card_id']).agg(pick_agg_cols)
    data_grouped.columns=[name+'_'+'_'.join(col).strip() for col in data_grouped.columns.values]
    return data_grouped
           

 4. apply() 

  apply應用于DataFrame的各個列,後者僅作用于指定的列。

df.groupby('purchase_amount').apply(np.sum)
           

繼續閱讀