📜  Python|熊猫 Dataframe.rank()(1)

📅  最后修改于: 2023-12-03 15:04:26.836000             🧑  作者: Mango

Python | 熊猫 DataFrame.rank()

简介

pandas.DataFrame.rank() 方法基于关键字参数,并且返回每个元素在整个轴上的排名。

这个方法根据排名的顺序可以分为三种:

  • average:默认值。通过分配平均排名将数据并列排名。
  • min:使用最小排名。
  • max:使用最大排名。

该方法的语法为:

DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)
参数
  • axis:{0 or ‘index’, 1 or ‘columns’}。指定排名应用到的轴。0 或者 ‘index’,表示沿着行进行排名; 1 或者 ‘columns’,表示沿着列进行排名。
  • method:{‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}。指定用于 rank 的排名方法。默认为 ‘average’。
  • numeric_only:布尔值,True 或 False,表示是否对数值数据进行排名。默认为 None,表示对所有类型数据进行排名。
  • na_option:{‘keep’, ‘top’, ‘bottom’}。表示在排名过程中如何处理 NA/null 值。默认为 'keep',表示保留 NA/null 值的输入顺序。
  • ascending:布尔值,True 或 False,表示返回排名是按升序还是降序进行排序。默认为 True,表示升序排序。
  • pct:布尔值,True 或 False。表示函数是否将排名除以轴的长度计算成百分比。默认为 False。
用法示例
import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
    'score': [90, 85, 78, 75, 92]
}

df = pd.DataFrame(data)

print(df.rank())  # 默认参数,全局排名

输出如下:

   name  score
0   1.0    4.0
1   2.0    3.0
2   3.0    2.0
3   4.0    1.0
4   5.0    5.0

该例子中,我们使用 rank() 方法来对 DataFrame 中的数据进行排名。

axis 参数
print(df.rank(axis=1))  # 沿着列进行排名

输出如下:

   name  score
0   1.0    2.0
1   1.0    2.0
2   1.0    2.0
3   1.0    2.0
4   1.0    2.0

该例子中,我们使用 axis 参数来指定对 DataFrame 沿着列进行排名。

method 参数
print(df.rank(method='min'))  # 使用最小排名
print(df.rank(method='max'))  # 使用最大排名

输出如下:

   name  score
0   1.0    4.0
1   2.0    3.0
2   3.0    2.0
3   4.0    1.0
4   5.0    5.0

   name  score
0   1.0    2.0
1   2.0    3.0
2   3.0    4.0
3   4.0    5.0
4   5.0    1.0

该例子中,我们使用 method 参数来指定排名方法为 min 或 max。

numeric_only 参数
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
    'score': [90, 85, 78, '75', 92]  # 加入一个字符串类型的数据
}

df = pd.DataFrame(data)

print(df)
print(df.rank(numeric_only=True))

输出如下:

      name score
0    Alice    90
1      Bob    85
2  Charlie    78
3    David    75
4    Emily    92

   score
0    4.0
1    3.0
2    2.0
3    1.0
4    5.0

该例子中,我们使用 numeric_only 参数来排除字符串类型的数据进行排名。

na_option 参数
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
    'score': [90, 85, None, 75, 92]  # 加入一个空值
}

df = pd.DataFrame(data)

print(df)
print(df.rank(na_option='keep'))

输出如下:

      name  score
0    Alice   90.0
1      Bob   85.0
2  Charlie    NaN
3    David   75.0
4    Emily   92.0

   name  score
0   1.0    3.0
1   2.0    2.0
2   3.0    NaN
3   4.0    1.0
4   5.0    4.0

该例子中,我们使用 na_option 参数来控制如何处理空值进行排名。

ascending 参数
print(df.rank(ascending=False))  # 按降序排名

输出如下:

   name  score
0   5.0    2.0
1   4.0    3.0
2   3.0    4.0
3   2.0    5.0
4   1.0    1.0

该例子中,我们使用 ascending 参数来指定按降序排名。

pct 参数
print(df.rank(pct=True))  # 将排名除以轴的长度计算成百分比

输出如下:

   name  score
0  0.20    0.8
1  0.40    0.6
2  0.60    0.4
3  0.80    0.2
4  1.00    1.0

该例子中,我们使用 pct 参数将排名除以轴的长度计算成百分比。