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


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參數,按需設置即可。

參考資料:
1、《利用python進行數據分析》
2、https://ask.csdn.net/questions/717823


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM