pandas.DataFrame.rank#

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

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

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

参数:
{0 或 ‘index’, 1 或 ‘columns’}, 默认 0

索引到直接排名。对于 Series,此参数未使用并默认为 0。

方法{‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}, 默认 ‘average’

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

  • average: 组的平均排名

  • min: 组中最低等级

  • max: 组中最高等级

  • 首先:按它们在数组中出现的顺序分配等级

  • dense: 类似于 ‘min’,但组之间的等级总是增加1。

numeric_only布尔值, 默认为 False

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

在 2.0.0 版本发生变更: numeric_only 的默认值现在是 False

na_option{‘keep’, ‘top’, ‘bottom’}, 默认 ‘keep’

如何对 NaN 值进行排序:

  • 保持:将 NaN 排名分配给 NaN 值

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

  • bottom: 将最高等级分配给 NaN 值

升序bool, 默认为 True

元素是否应按升序排序。

pct布尔值, 默认为 False

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

返回:
与调用者相同类型

返回一个带有数据排名的 Series 或 DataFrame。

参见

core.groupby.DataFrameGroupBy.rank

每个组内值的排名。

core.groupby.SeriesGroupBy.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' 时,具有相同值的记录使用最高排名(例如:由于 ‘cat’ 和 ‘dog’ 都在第2和第3位置,因此分配排名3。)

  • 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