一.高级处理-分组与聚合
学习目标
- 目标
- 应用groupby和聚合函数实现数据的分组与聚合
- 应用
- 星巴克零售店数据的分组与聚合
分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况
想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!!看其中的效果:
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
二.案例实现
分组和聚合
In [124]:
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]})
col
Out[124]:
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 |
- groupby ([“xx”]) [“oo”].mean()
- 把xx列的数据按照oo的平均值分组
In [125]:
col.groupby(["color"])["price1"].mean()
Out[125]:
color
green 2.025
red 2.380
white 5.560
Name: price1, dtype: float64
In [129]:
# 同上
col["price1"].groupby(col["color"]).mean()
Out[129]:
color
green 2.025
red 2.380
white 5.560
Name: price1, dtype: float64
In [130]:
# as_index = False :可以把index的标题位置上移
col.groupby(["color"], as_index=False)["price1"].mean()
Out[130]:
color | price1 | |
---|---|---|
0 | green | 2.025 |
1 | red | 2.380 |
2 | white | 5.560 |