1

我正在阅读Wes McKinney 的Python for Data Analysis并遇到以下问题:

排名从 1 到数组中有效数据点的数量分配排名。Series 和 DataFrame 的 rank 方法是看的地方;默认情况下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

我无法对此做出正面或反面,这个函数在做什么?

4

2 回答 2

2

TL;博士

  • 通常,Ranking 为具有n 个值的排序数据创建数值 1 到n

要想了解 pandas.Series.rank(),首先要了解什么是排名,可以参考Ranking-WikipediaTest for Rank data来了解清楚。

由于排名适用于已排序的数据,请先尝试对数据进行排序

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 文档,有一个名为的参数method,其默认值为average,它的作用是,它使用平均值作为重复数据的默认值。它首先对数据进行排序,然后计算排名,最后根据排名值将输入映射到输出。

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

于 2021-07-04T03:32:49.260 回答
0

更新:看了一遍,我想通了。

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

于 2021-07-04T03:16:59.777 回答