数据分析之Pandas(十)高级处理-分组与聚合

高级处理-分组与聚合

分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况

想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!!看其中的效果:
数据分析之Pandas(十)高级处理-分组与聚合

什么是分组与聚合

数据分析中,常常需要把数据量相对较大的数据分成若干各组,然后分别对小的组中的数据做统计分析操作,比如说分析员工工资状况与员工的性别/入职年份/部分之间的关系时。

分组与聚合的内部过程:分组 -> 统计得出每一个小的组的统计值 -> 合并成最终结果
数据分析之Pandas(十)高级处理-分组与聚合

分组与聚合API

  • DataFrame.groupby(),生成 DataFrameGroupBy
  • Series.groupby(),生成 SeriesGroupBy

通过DataFrame来做groupby相对方便一些,因为只需要传分组依据所在的列的名称即可

  • DataFrame.groupby(key, as_index=False)
    • key:分组的列数据,可以多个
  • 案例:不同颜色的不同笔的价格数据
data =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]})

数据分析之Pandas(十)高级处理-分组与聚合进行分组,对颜色分组,price进行聚合

  • 分组,求最大值
    数据分析之Pandas(十)高级处理-分组与聚合
  • 分组,求平均值
    数据分析之Pandas(十)高级处理-分组与聚合
  • 分组,数据的结构不变
    数据分析之Pandas(十)高级处理-分组与聚合

案例分析 : 星巴克零售店铺数据

counts = data.groupby('Country').count()
brand = counts['Brand'] brand = brand.sort_values(ascending=False)
brand[:10].plot(kind='bar', figsize=(12, 6), fontsize=14)

按照多个条件分组:
counts = data.groupby(['Country', 'State/Province']).count()
counts.loc['CN']['Brand'].sort_values(ascending=False)

现在我们有一组关于全球星巴克店铺的统计数据,如果我想知道美国的星巴克数量和中国的哪个多,或者我想知道中国每个省份星巴克的数量的情况,那么应该怎么办?

数据来源:https://www.kaggle.com/starbucks/store-locations/data
数据分析之Pandas(十)高级处理-分组与聚合

  • 数据获取
    链接:https://pan.baidu.com/s/1UD2SvDWCuJvtHB1a8yIkuQ
    提取码:egoc
    从文件中读取星巴克店铺数据
    导入星巴克店的数据
    数据分析之Pandas(十)高级处理-分组与聚合
  • 进行分组聚合
    按照国家分组,求出每个国家的星巴克零售店数量
    数据分析之Pandas(十)高级处理-分组与聚合
    画图显示结果
count['Brand'].plot(kind='bar', figsize=(20, 8))
plt.show()

数据分析之Pandas(十)高级处理-分组与聚合
数据分析之Pandas(十)高级处理-分组与聚合
数据分析之Pandas(十)高级处理-分组与聚合
假设我们加入省市一起进行分组
设置多个索引
数据分析之Pandas(十)高级处理-分组与聚合
数据分析之Pandas(十)高级处理-分组与聚合
数据分析之Pandas(十)高级处理-分组与聚合
仔细观察这个结构,与我们前面讲的哪个结构类似??
与前面的MultiIndex结构类似

版权声明:
笔者博客文章主要用来作为学习笔记使用,内容大部分整理自互联网,如有侵权,请联系博主删除!