📅  最后修改于: 2023-12-03 15:04:26.836000             🧑  作者: Mango
pandas.DataFrame.rank() 方法基于关键字参数,并且返回每个元素在整个轴上的排名。
这个方法根据排名的顺序可以分为三种:
该方法的语法为:
DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=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 中的数据进行排名。
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 沿着列进行排名。
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。
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 参数来排除字符串类型的数据进行排名。
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 参数来控制如何处理空值进行排名。
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 参数来指定按降序排名。
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 参数将排名除以轴的长度计算成百分比。