pandas.Series.rank#

Series.rank(axis=0, method='average', numeric_only=NoDefault.no_default, na_option='keep', ascending=True, pct=False)[源代码]#

沿轴计算数值数据排名(从1到n)。

默认情况下,为相等值分配的排名是这些值的排名的平均值。

参数
axis{0或‘index’,1或‘Columns’},默认为0

直接排名的索引。

method{‘Average’,‘Min’,‘Max’,‘First’,‘Density’},默认‘Average’

如何对具有相同值(即平局)的一组记录进行排名:

  • Average:组的平均排名

  • MIN:组中排名最低的

  • 最大:小组中最高的排名

  • First:按照在数组中出现的顺序分配的排名

  • 密集:像‘min’,但组之间的排名总是增加1。

numeric_only布尔值,可选

对于DataFrame对象,如果设置为True,则仅对数值列进行排名。

na_option{‘Keep’,‘Top’,‘Bottom’},默认‘Keep’

如何对NaN值进行排名:

  • Keep:将NaN等级指定给NaN值

  • 顶部:将最低等级分配给NaN值

  • 下:为NaN值指定最高等级

ascending布尔值,默认为True

元素是否应按升序排列。

pct布尔值,默认为False

是否以百分位形式显示返回的排名。

退货
与呼叫者类型相同

返回数据排名为值的Series或DataFrame。

参见

core.groupby.GroupBy.rank

每个组内的值的排名。

示例

>>> df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog',
...                                    'spider', 'snake'],
...                         'Number_legs': [4, 2, 4, 8, np.nan]})
>>> df
    Animal  Number_legs
0      cat          4.0
1  penguin          2.0
2      dog          4.0
3   spider          8.0
4    snake          NaN

平局被分配给该组的平均排名(默认情况下)。

>>> s = pd.Series(range(5), index=list("abcde"))
>>> s["d"] = s["b"]
>>> s.rank()
a    1.0
b    2.5
c    4.0
d    2.5
e    5.0
dtype: float64

下面的示例显示了使用上述参数时该方法的行为:

  • DEFAULT_RANK:这是在不使用任何参数的情况下获得的默认行为。

  • MAX_RANK:设置 method = 'max' 具有相同值的记录使用最高排名进行排序(例如:由于‘猫’和‘狗’都在第二和第三位,因此分配了第三位。)

  • NA_Bottom:选择 na_option = 'bottom' ,如果存在具有NaN值的记录,则将它们放在排名的底部。

  • PCT_RANK:设置时 pct = True ,排名以百分位数排名表示。

>>> df['default_rank'] = df['Number_legs'].rank()
>>> df['max_rank'] = df['Number_legs'].rank(method='max')
>>> df['NA_bottom'] = df['Number_legs'].rank(na_option='bottom')
>>> df['pct_rank'] = df['Number_legs'].rank(pct=True)
>>> df
    Animal  Number_legs  default_rank  max_rank  NA_bottom  pct_rank
0      cat          4.0           2.5       3.0        2.5     0.625
1  penguin          2.0           1.0       1.0        1.0     0.250
2      dog          4.0           2.5       3.0        2.5     0.625
3   spider          8.0           4.0       4.0        4.0     1.000
4    snake          NaN           NaN       NaN        5.0       NaN