DataFrame.rank(self: ~FrameOrSeries, axis=0, method: str = 'average', numeric_only: Union[bool, NoneType] = None, na_option: str = 'keep', ascending: bool = True, pct: bool = False) → ~FrameOrSeries
对沿指定轴的数值数据进行排名(从 1 到 n)。
默认情况下,对于具有相同值的元素,分配它们对应排名的平均值作为最终排名。
参数: | axis:{ 直接排名的索引。 method:
默认为 如何对具有相同值(即ties)的记录组进行排名: 1) 2) 3) 4) 5)
对于DataFrame对象,如果设置为True, 则仅对数字列进行排名。 na_option: 默认为 如何对 1) 2) 3) ascending: 元素是否应该按升序排列。 pct: 是否以百分比形式显示返回的排名。 |
返回值: | 与调用者相同的类型 返回以数据等级作为值的 |
例子
1)基本使用(按列排名)
import pandas as pd
df = pd.DataFrame({
'math': [90, 80, 80, 70],
'english': [88, 90, 85, 70]
})
print(df.rank())
2)使用不同 method 策略
import pandas as pd
df = pd.DataFrame({
'math': [90, 80, 80, 70],
'english': [88, 90, 85, 70]
})
print(df.rank(method='min'))
3)按行排名
import pandas as pd
df = pd.DataFrame({
'math': [90, 80, 80, 70],
'english': [88, 90, 85, 70]
})
print(df.rank(axis=1))
4)返回百分比排名
import pandas as pd
df = pd.DataFrame({
'math': [90, 80, 80, 70],
'english': [88, 90, 85, 70]
})
print(df.rank(pct=True))
5)rank()
方法各种用法对比
使用上述参数的方法的行为:
- default_rank:这是不使用任何参数而获得的默认行为。
- max_rank:设置
method = 'max'
具有相同值的记录将使用最高排名进行排名(例如:由于'cat'
和'dog'
都位于第二和第三位置,因此分配了rank 3。) - NA_bottom:选择
na_option = 'bottom'
,如果存在具有NaN值的记录,则将它们放在排名的底部。 - pct_rank:设置
pct = True
时,排名以百分等级表示。
import pandas as pd
import numpy as np
# 创建示例 DataFrame
df = pd.DataFrame({
'Animal': ['cat', 'penguin', 'dog', 'spider', 'snake'],
'Number_legs': [4, 2, 4, 8, np.nan]
})
# 不同 ranking 设置的列
# 默认:method='average'
df['default_rank'] = df['Number_legs'].rank()
# 并列时取最大名次
df['max_rank'] = df['Number_legs'].rank(method='max')
# NaN 作为最大名次处理
df['NA_bottom'] = df['Number_legs'].rank(na_option='bottom')
# 返回排名百分比
df['pct_rank'] = df['Number_legs'].rank(pct=True)
# 打印结果
print(df)