天天看點

pandas中的Series和DataFrame的rank方法的了解

rank是将Series或DataFrame的資料進行排序類型的一種方法,不過它并不像sort(含sort_index、sort_values等)那樣傳回的是排序後的資料,而是目前資料的排名。

上述很好了解,但是往往可以看到一句話:

預設情況下,rank是通過“為各組配置設定一個平均排名”的方式破壞平級關系的

剛接觸這個方法可能很難了解這句話,那麼看下面的例子:

pandas中的Series和DataFrame的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參數.

pandas中的Series和DataFrame的rank方法的了解

如上圖所示,設定為method為first時,對于相同的資料,它會根據資料出現的順序進行排序。

其他的method的取值及說明如下:

pandas中的Series和DataFrame的rank方法的了解

同時,我們可以讓rank的排名順序為逆序,這是隻需設定ascending = False即可,示例如下:

pandas中的Series和DataFrame的rank方法的了解

上述全都是對于Series的操作,而對于DataFrame而言方法是一樣的,隻是在DataFrame中,我們可以自己選擇是在行還是列上進行計算,rank方法中有axis參數,按需設定即可。

繼續閱讀