之前搜关于pandas rank()函数的帖子,好几个大哥都是照搬书,当然也有一些大神直接一顿操作+截图。我结合了书还有自己的理解,希望没有错误,也希望和我一样的新手能看懂。谢谢!!

1. rank()

默认情况下,rank() 通过将平均排名分配到每个组打破平级关系。也就是说,如果有两组数值一样,那他们的排名将会被加在一起再除2.
obj=pd.Series([3,5,-1,0,5,6])
print(obj)
print(obj.rank())
得到如图:

python排序函数 array python排序函数rank怎么用_python排序函数 array

我们自己手动排一下,-1,0,3,5,5,6.所以-1是第1名,0是第2名,3是第3,5是第4,5是第5,6是第6. 两个5的排名分别是4和5。所以在默认的排法。他们都是4.5(平均数)。

2. rank(method=“first”)

####这种情况下没有小数点,因为出现同样的数字的时候,我们按先看到谁谁就是老大的原则。书面文字是:排名也可以根据他们在数据中的观察顺序进行分配:

python排序函数 array python排序函数rank怎么用_数据_02

因此,同样两个5,从上到下,我们先看到 index=1 的那个5,所以他排名要优先于 index=4 的那个5.

3. rank(method=“min”)与 “dense”

这两个有点类似但是还是有区别,我们导入一个新的obj。
obj=pd.Series([3,5,-1,0,5,5,6])
print(obj)
obj.rank(method="min")

python排序函数 array python排序函数rank怎么用_python_03

前面很好理解,同时出现3个5,我们把它用最小的号码排名,那就是都并列为4.但是因为这3个5占了4,5,6三个坑位,下一个就只能为排名7了。
dense,翻译过来的意思就是稠密,它与min唯一的区别就是,重复的不会占坑位,因此,3个5还是排第4,6可以排第五名了,这个也是比较常用的排名,比如班级名次,有几个人并列第n名,不影响紧跟着的n+1名。所以dense总是连续的,即组间排名总是+1.不过只是会有重复的而已。

python排序函数 array python排序函数rank怎么用_python排序函数 array_04

4. rank(method=“max”)

类似于min的占坑位,3个5占4,5,6三个坑位时,min取4,在method为“max”时就取6了,其他一样。

python排序函数 array python排序函数rank怎么用_数据结构_05

当然还可以顺序反过来,用 ascending=False

python排序函数 array python排序函数rank怎么用_python排序函数 array_06

5 method=“average”

同样地,3个5占4,5,6三个坑, method=“average“就是取这三个的平均数(4+5+6)/3,后面的数还是排在坑外为7.

python排序函数 array python排序函数rank怎么用_python排序函数 array_07