Python系列----pandas的排序、排名

這期主要跟大家介紹pandas的.sort_index()、.sort_values()和rank()

原數據


import pandas as pd
df = pd.DataFrame({'b':[1,2,3,2], 'a':[4,3,2,1], 'c':[1,3,8,2]}, index=[2,0,1,3])
s = pd.DataFrame([1,3,2,1,6], index=["a","c","d","b","e"])


df
Out[1]: 
   b  a  c
2  1  4  1
0  2  3  3
1  3  2  8
3  2  1  2

s
Out[2]: 
   0
a  1
c  3
d  2
b  1
e  6

.sort_index() 索引排序

索引排序,顧名思義是根據索引排序,也就是根據數據框的列/行標籤進行排序


df.sort_index()                        # 按行標籤排序
df.sort_index(axis = 1)                # 按列標籤排序


df.sort_index()                        # 按行標籤排序
Out[3]: 
   b  a  c
0  2  3  3
1  3  2  8
2  1  4  1
3  2  1  2

df.sort_index(axis = 1)                # 按列標籤排序
Out[4]: 
   a  b  c
2  4  1  1
0  3  2  3
1  2  3  8
3  1  2  2

.sort_values() 值排序

值排序,則是根據你參數by所指定的行或列的值進行排序


df.sort_values(by = 'b')                                 # 按b列升序排列
df.sort_values(by=3, axis=1, ascending=[False])          # 按行3降序排列
df.sort_values(by=['b','a'], ascending=[False,True])     # 先按b列降序,再按a列升序排序


df.sort_values(by = 'b')                                 # 按b列升序排列
Out[7]:  
   b  a  c
2  1  4  1
0  2  3  3
3  2  1  2
1  3  2  8

df.sort_values(by=3, axis=1, ascending=[False])            # 按行3降序排列
Out[8]: 
   b  c  a
2  1  1  4
0  2  3  3
1  3  8  2
3  2  2  1

df.sort_values(by=['b','a'], ascending=[False,True])       # 先按b列降序,再按a列升序排序
Out[9]: 
   b  a  c
1  3  2  8
3  2  1  2
0  2  3  3
2  1  4  1

rank() 排名

排名,則是對值進行排列,得出值在該組中對應的排名,排名的方式依據參數method來限定,默認平均排名,即相同值的排名取這些值排名的平均值作爲這幾個數的排名(相同值的排名會相同)


s.rank()                    # 平均排名
s.rank(method='first')      # 按出現順序分配排名


s.rank()                    # 平均排名
Out[10]: 
     0
a  1.5
c  4.0
d  3.0
b  1.5
e  5.0

s.rank(method='first')      # 按出現順序分配排名
Out[11]: 
     0
a  1.0
c  4.0
d  3.0
b  2.0
e  5.0

其他排名方法運用同理,改一下method的值就可以了,大家可以自行運行觀察結果

method參數

(1)average使用平均排名,也是默認的排名方式
(2)first按值在原始數據中的出現順序分配排名
(3)min用整個分組的最小排名
(4)max用整個分組的最大排名

通用參數總結

1、axis參數默認爲0,即按列排序,所以按行排序的必須有參數axis=1
2、ascending參數默認爲Ture,即升序排序,而 False:降序排序,使用時用ascending=[False]

別忘了點個贊支持一下再走哦~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章