Pythoner集中营呆鸟的Python数据分析码农的世界

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

2018-07-13  本文已影响141人  跌跌撞撞小红豆

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

groupby的简单介绍

image.png

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

image.png

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

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

image.png

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

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

image.png

对分组进行迭代

以下是单键值情况

image.png

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

image.png

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

通过字典进行分组

image.png

通过函数进行分组

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

image.png

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

image.png

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

image.png

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

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

更加高阶的运用

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

image.png

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

image.png

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

image.png

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

上一篇下一篇

猜你喜欢

热点阅读