对于Pandas系列,rank函数在默认情况下做什么?

2024-06-03 05:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读Wes McKinney撰写的用于数据分析的Python

排名按数组中有效数据点的数量从一个到多个分配排名。序列和数据帧的秩方法是可以查看的地方;默认情况下rank通过为每个组分配平均等级来打破联系:

In [215]: obj = pd.Series([7, -5, 7, 4, 2, 0, 4])

In [216]: obj.rank()
Out[216]:
0   6.5
1   1.0
2   6.5
3   4.5
4   3.0
5   2.0
6   4.5
dtype: float64

不幸的是,我不知道这个函数做什么,我发现解释和相关文档同样令人困惑:https://pandas.pydata.org/docs/reference/api/pandas.Series.rank.html

我不能理解这个,这个函数在做什么


Tags: 数据方法函数inobjpandas数量地方
2条回答

TL;DR

  • 一般来说,排名为具有n值的排序数据创建数值1到n

为了理解pandas.Series.rank(),您需要首先了解排名是什么,您可以参考Ranking-WikipediaTest for Rank data来清楚地理解它

由于rank处理已排序的数据,请尝试先对数据进行排序

obj.sort_values()
1   -5
5    0
4    2
3    4
6    4
0    7
2    7

对数据进行排序后,每个值都有自己的秩,从1到n,因为-5是最低的值,所以它的秩是10是第二个最低值,因此它将具有秩2,2具有秩3,但4是第四个最低值,并且重复

根据Series.rank documentation,有一个名为method的参数,它的默认值为average,它使用平均值作为重复数据的默认值。它首先对数据进行排序,然后计算秩,最后根据秩值将输入映射到输出

因此,两个4的等级为4和5,它们的average为4.5,同样,两个7的等级为6和7,它们的average为6.5

更新:看看这个,我已经弄明白了

-5是数组中的最小值,因此值为-5的元素的argmin索引(1)的秩=1.0,下一个最小值为0,因此该值的索引的秩=2.0。最后,最大值是7,但它出现了两次,因此它同时是排名第6和第7的元素,所以它的平均排名是6.5

相关问题 更多 >