排序之rank
排名(ranking)跟排序关系密切,切它会增设一个排名值(从1开始,一直到数组中有效数据的数量)。
它跟 numpy.argsort 产生的间接根据索引排序差不多,只不过它可以根据某种规则破坏平级关系。
默认情况下,rank是通过 “为各组分配一个平均排名” 的方式破坏平级关系的。
import pandas as pd
# rank() 排名
ser = pd.Series([3, 4, 1, 3, 3], index=list("abcde"))
print(ser)
# 运行结果:
a 3
b 4
c 1
d 3
e 3
dtype: int64
# 默认排名以平均值显示
print(ser.rank())
# 运行结果:
a 3.0
b 5.0
c 1.0
d 3.0
e 3.0
dtype: float64
# 并列小的名次
print(ser.rank(method="min"))
# 运行结果:
a 2.0
b 5.0
c 1.0
d 2.0
e 2.0
dtype: float64
# 并列大的名次
print(ser.rank(method="max"))
# 运行结果:
a 4.0
b 5.0
c 1.0
d 4.0
e 4.0
dtype: float64
# 两个值相等,谁的位置靠前谁的排名在前
print(ser.rank(method="first"))
# 运行结果:
a 2.0
b 5.0
c 1.0
d 3.0
e 4.0
dtype: float64