pandas之分組計算groupby


 

導語:

在數據分析中我們經常要拆分列和合並列即拆分-應用-合並,下面放一張經典圖

導入數據

1 #導入pandas和numpy庫
2 import pandas as pd
3 import numpy as np
4 from pandas import Series,DataFrame 
5 test=pd.read_excel("/Users/yaozhilin/Downloads/exercise.xlsx",sep="t")
6 test.head(5)#顯示前五行

 

 

 

•groupby

由上圖可知我們第一步就是要對數據進行拆分

tg=test.groupby(["所屬區域","產品類別"])#分組
1 tg.mean#聚合

 

 

~agg

分一組多種聚合方法:.agg([])

1 test.groupby("所屬區域").agg([np.mean,np.sum])

 

 

多組多種聚合方法

1 test.groupby(["所屬區域","產品類別"]).agg([np.mean,np.sum])

 

 

 

 

對每列數據進行不同的聚合.agg({})

1 test.groupby(["所屬區域","產品類別"]).agg({"數量":np.mean,"金額":np.sum})

 

 

~transformation

transform() 里面不能跟自定義的特征交互函數,因為transform是真針對每一元素(即每一列特征操作)進行計算

transform它只能對每一列進行計算,所以在groupby()之后,.transform()之前是要指定要操作的列

transform是對每個組做運算,再返回所有數據

1 test.groupby(["所屬區域","產品類別"])["數量","金額"].transform(lambda x:(x-x.mean())/ x.std())

 

 

~filter

filter對分組數據做過濾,相當於sql中是hive

 

1 tg.filter(lambda x:x["數量"].mean()>=300)

 

 

 

返回每組中平均數>=300的組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM