1. 程式人生 > 實用技巧 >高階處理-分組與聚合

高階處理-分組與聚合

分組與聚合通常是分析資料的一種方式,通常與一些統計函式一起使用,檢視資料的分組情況

想一想其實剛才的交叉表與透視表也有分組的功能,所以算是分組的一種形式,只不過他們主要是計算次數或者計算比例!!看其中的效果

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()