小蛇学python(18)pandas的数据聚合与分组计算

对数据集进行分组并对各组应用一个函数,这是数据分析工作的重要环节。在将数据集准备好之后,通常的任务就是计算分组统计或生成透视表。pandas提供了一个高效的groupby功能,它使你能以一种自然的方式对数据集进行切片、切块、摘要等操作。

groupby的简单介绍

小蛇学python(18)pandas的数据聚合与分组计算_第1张图片
image.png

变量grouped是一个GroupBy对象。它还没有进行计算,但是已经分组完毕。

小蛇学python(18)pandas的数据聚合与分组计算_第2张图片
image.png

以上是对已经分组完毕的变量的一些计算,同时还涉及到层次化索引以及层次化索引的展开。

groupby还有更加简便得使用方法。

小蛇学python(18)pandas的数据聚合与分组计算_第3张图片
image.png

你一定注意到,在执行上面一行代码时,结果中没有key2列,这是因为该列的内容不是数值,俗称麻烦列,所以被从结果中排除了。

无论你准备拿groupby做什么,都会用到size方法,它可以返回一个含有分组大小的Series。

小蛇学python(18)pandas的数据聚合与分组计算_第4张图片
image.png

对分组进行迭代

以下是单键值情况

小蛇学python(18)pandas的数据聚合与分组计算_第5张图片
image.png

以下是按由多个键值构成元组的分组情况

小蛇学python(18)pandas的数据聚合与分组计算_第6张图片
image.png

通过这两个操作分析得知,第一行打印出来的是分组所根据的键值,紧接是按照此分组键值或者键值对得到的分组。

通过字典进行分组

小蛇学python(18)pandas的数据聚合与分组计算_第7张图片
image.png

通过函数进行分组

这是一个极具python特色的功能。

小蛇学python(18)pandas的数据聚合与分组计算_第8张图片
image.png

如果你想使用的自己的聚合函数,只需要将其传入aggregate或者agg方法即可。

小蛇学python(18)pandas的数据聚合与分组计算_第9张图片
image.png

还有describe方法,严格来讲它不是聚类运算,它很好的描述了一个数据集的分组分布情况。

小蛇学python(18)pandas的数据聚合与分组计算_第10张图片
image.png

总结一下常用的分组聚类函数。

函数名 说明
count 分组中的非NA的值的数量
sum 非NA值的和
mean 非NA值得平均值
median 非NA值的算术中位数
std var 标准差,方差
max min 最大值,最小值
prod 非NA值的积
first last 第一个和最后一个非NA值

更加高阶的运用

我们拿到一个表格,想添加一个用于存放各索引分组平均值的列。我们可以利用以前学习pandas的表格合并的知识,但是pandas也给我专门提供了更为简便的方法。

小蛇学python(18)pandas的数据聚合与分组计算_第11张图片
image.png

经过以上操作,我们可以看出来,凡是key是按照one分组的,如今在people列表里都变成了one里的平均值。这时候我们再自定义函数。

小蛇学python(18)pandas的数据聚合与分组计算_第12张图片
image.png

这样就实现了,people表格里的数据减去同类型数据平均值的功能。这个功能叫做距平化,是一个经常使用的操作。是不是很神奇,如果不相信,我们可以来验证一下,按理说减去平均值后,数据的平均值会变成零。

小蛇学python(18)pandas的数据聚合与分组计算_第13张图片
image.png

可以看出来,就算不为零,也是很小的数。至于为什么不准确为零,这是由于python的float浮点类型数据自身不够精确的问题,不在我们讨论之内。

你可能感兴趣的:(小蛇学python(18)pandas的数据聚合与分组计算)