rank是将Series或DataFrame的資料進行排序類型的一種方法,不過它并不像sort(含sort_index、sort_values等)那樣傳回的是排序後的資料,而是目前資料的排名。
上述很好了解,但是往往可以看到一句話:
預設情況下,rank是通過“為各組配置設定一個平均排名”的方式破壞平級關系的
剛接觸這個方法可能很難了解這句話,那麼看下面的例子:
是不是仍然很難了解,為什麼rank會有小數?
這時候請再回味一下上面那句話,為各組配置設定一個平均排名。
什麼意思呢?
我們可以自己先拍一下一些沒用争議的數字,比如-5最小,其排名為1.0,0其次,是以其排名為2.0,數字2同理,其排名為3.0,這些都沒問題,但是到了4的時候,我們發現Series中存在兩個4,那麼根據不同的規則,我們可以說數字4的排名是4.0,但也可以說是5.0,而“為各組配置設定一個平均排名”就能很好的解釋這個4.5的來源了,即取4.0和5.0的平均值,那麼對于數字7來說,也是一個道理了,其既可以取6.0,也可以取7.0,這裡平均一下,就成了6.5了。
當然上述全都是預設情況下的排名方式,我們可以根據自己的實際需要對這種排名的方式進行調整,rank函數為我們提供了一個method參數.
如上圖所示,設定為method為first時,對于相同的資料,它會根據資料出現的順序進行排序。
其他的method的取值及說明如下:
同時,我們可以讓rank的排名順序為逆序,這是隻需設定ascending = False即可,示例如下:
上述全都是對于Series的操作,而對于DataFrame而言方法是一樣的,隻是在DataFrame中,我們可以自己選擇是在行還是列上進行計算,rank方法中有axis參數,按需設定即可。