看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 的 rank()
方法用于计算 DataFrame 或 Series 中每个值的排名。排名的计算方式可以根据参数进行调整,比如处理重复值的方法和排名的方式。
DataFrame.rank(axis=0, method='average', numeric_only=False,
na_option='keep', ascending=True, pct=False)
axis
:int
,默认值是 0
指定计算排名的轴。0
表示按列计算排名,1
表示按行计算排名。
method
:str
,默认值是 'average'
处理重复值的方法。可以取值:
'average'
:给重复值的平均排名'min'
:给重复值最小的排名'max'
:给重复值最大的排名'first'
:给重复值中第一个出现的排名'dense'
:像 'min'
方法一样,但排名是连续的,不会跳跃numeric_only
:bool
,默认值是 False
是否只计算数值类型的列。默认为 False
,即计算所有列(如果 True
,会忽略非数值类型的列)。
na_option
:str
,默认值是 'keep'
如何处理缺失值(NaN)。可以取值:
'keep'
:保持缺失值的位置'top'
:缺失值排名排在最前面'bottom'
:缺失值排名排在最后面ascending
:bool
,默认值是 True
是否按升序计算排名。True
表示升序,False
表示降序。
pct
:bool
,默认值是 False
是否计算百分比排名。如果为 True
,返回每个排名的百分比;如果为 False
,返回实际排名。
返回一个 DataFrame 或 Series,其中包含每个元素的排名。数据类型与原数据一致。
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
'''
以下示例显示了该方法在上述参数下的行为:
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
'''
假设我们有一个包含学生成绩的 DataFrame,我们可以使用 rank()
方法来计算每个学生成绩的排名。
import pandas as pd
# 创建示例数据
data = {
'数学': [75, 85, 95, 65, 70],
'英语': [88, 92, 85, 70, 80],
'物理': [92, 90, 87, 85, 80]
}
df = pd.DataFrame(data)
# 计算排名
ranks = df.rank(method='min', ascending=False, pct=True)
print(ranks)
'''
数学 英语 物理
0 0.6 0.4 0.2
1 0.4 0.2 0.4
2 0.2 0.6 0.6
3 1.0 1.0 0.8
4 0.8 0.8 1.0
'''
更新时间:2024-08-08 21:05:16 标签:pandas python 排名 rank