導語:
在數據分析中我們經常要拆分列和合並列即拆分-應用-合並,下面放一張經典圖
導入數據
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的組