Series对象或DataFrame对象使用rank()函数进行排名

2024年3月22日14:45:19Series对象或DataFrame对象使用rank()函数进行排名已关闭评论

根据条件对Series对象或DataFrame对象的值排序(Sorting)和排名(Ranking)是Pandas一种重要的内置运算。Series对象或DataFrame对象可以使用sort_index()/sort_values()函数进行排序,使用rank()函数进行排名。

Series和DataFrame的排名

排名跟排序关系密切,且它会增设一个排名值(从1开始,一直到Pandas中有效数据的总数)。但需要注意如何处理出现相同的值。下面介绍Series和DataFrame的rank()函数。

1.Series的排名

Series的rank()函数。

rank(method="average", ascending=True)

对于出现的相同的值,method参数值first表示按值在原始数据中的出现顺序分配排名,min表示使用整个分组的最小值排名,max使用整个分组的最大值排名,average使用平均值排名,也是默认的排名方式。还可以设置ascending参数,设置按降序排名或升序排名。

import pandas as pd 
s = pd.Series([1 ,3 ,2 ,1 ,6] ,index=["a" ,"c" ,"d" ,"b" ,"e"]) 
#1是最小的,所以第一个1排在第一,第二个1排在第二,因为取的是平均排名,所以1的排名为1.5 
print(s.rank())# 默认根据值的大小进行平均排名

结果如下:

a    1.5 
c    4.0 
d    3.0 
b    1.5 
e    5.0

设置method参数值:

print(s.rank(method="first"))    # 根据值在Series中出现的顺序进行排名

结果如下:

a    1.0 
c    4.0 
d    3.0 
b    2.0 
e    5.0

2.DataFrame的排名

DataFrame的rank()函数。

rank(axis=1, method="average", ascending=True)

method参数和ascending参数的设置与Series中的一样。

import pandas as pd 
a = [[9, 3, 1], [1, 2, 8], [1, 0, 5]] 
data = pd.DataFrame(a, index=["0", "2", "1"], columns=["c", "a", "b"]) 
print(data)

原始数据如下:

   c  a  b 
0  9  3  1 
2  1  2  8 
1  1  0  5

默认按列进行排名:

print(data.rank())

结果如下:

    c    a    b 
0  3.0  3.0  1.0 
2  1.5  2.0  3.0 
1  1.5  1.0  2.0

按行进行排名:

print(data.rank(axis=1))

结果如下:

0  3.0  2.0  1.0 
2  1.0  2.0  3.0 
1  2.0  1.0  3.0
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。