高階處理-分組與聚合
阿新 • • 發佈:2020-08-27
分組與聚合通常是分析資料的一種方式,通常與一些統計函式一起使用,檢視資料的分組情況
想一想其實剛才的交叉表與透視表也有分組的功能,所以算是分組的一種形式,只不過他們主要是計算次數或者計算比例!!看其中的效果
1 什麼分組與聚合
2 分組API
- DataFrame.groupby(key, as_index=False)
- key:分組的列資料,可以多個
- 案例:不同顏色的不同筆的價格資料
col =pd.DataFrame({'color': ['white','red','green','red','green'], 'object': ['pen','pencil','pencil','ashtray','pen'],'price1':[5.56,4.20,1.30,0.56,2.75],'price2':[4.75,4.12,1.60,0.75,3.15]}) color object price1 price2 0 white pen 5.56 4.75 1 red pencil 4.20 4.12 2 green pencil 1.30 1.60 3 red ashtray 0.56 0.75 4 green pen 2.75 3.15
- 進行分組,對顏色分組,price進行聚合
# 分組,求平均值 col.groupby(['color'])['price1'].mean() col['price1'].groupby(col['color']).mean() color green 2.025 red 2.380 white 5.560 Name: price1, dtype: float64 # 分組,資料的結構不變 col.groupby(['color'], as_index=False)['price1'].mean() color price1 0 green 2.025 1 red 2.380 2 white 5.560
3 星巴克零售店鋪資料
現在我們有一組關於全球星巴克店鋪的統計資料,如果我想知道美國的星巴克數量和中國的哪個多,或者我想知道中國每個省份星巴克的數量的情況,那麼應該怎麼辦?
3.1 資料獲取
從檔案中讀取星巴克店鋪資料
# 匯入星巴克店的資料 starbucks = pd.read_csv("./data/starbucks/directory.csv")
3.2 進行分組聚合
# 按照國家分組,求出每個國家的星巴克零售店數量 count = starbucks.groupby(['Country']).count()
畫圖顯示結果
count['Brand'].plot(kind='bar', figsize=(20, 8)) plt.show()
假設我們加入省市一起進行分組
# 設定多個索引,set_index() starbucks.groupby(['Country', 'State/Province']).count()