Mike的Python學院

程式語言、資料整理、Python、Kaggle、資料搜集、Pandas、PYTHON資料分析、資料分析

Mike Ku

Learn Code With Mike品牌創辦人

2021/11/23

輕鬆入門3個常見的Pandas套件排序資料方式

面對現實生活中所蒐集來的各式各樣資料,想要能夠快速的進行初步整理,並且有效觀察其中的內容,資料排序可以說是最常使用的方法之一。
而Pandas套件對於資料排序的功能,也提供了非常好支援,本文就以Kaggle網站的2009-2019年Amazon前50名暢銷書資料集bestsellers with categories.csv( https://www.kaggle.com/sootersaalu/amazon-top-50-bestselling-books-2009-2019 )為例,帶大家來瞭解如何在資料集中應用Pandas套件的排序方法(Method)。
Q:Pandas DataFrame如何單欄位排序資料?
如果想要針對讀者評價(User Rating)來進行由小到大的升冪排序,就可以呼叫Pandas套件的sort_values()方法(Method),並且透過by關鍵字參數,指定所要排序的欄位名稱,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
df.sort_values(by='User Rating')
事實上,Pandas套件的sort_values()方法(Method)會知道要升冪排序,是因為還有一個ascending關鍵字參數,預設為True,所以如果想要進行升冪排序,可以省略ascending關鍵字參數。
相反的,Pandas套件的sort_values()方法(Method)要執行由大到小的降冪排序,就需要設定ascending關鍵字參數為False,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
df.sort_values(by='User Rating', ascending=False)
Q:Pandas DataFrame如何多欄位排序資料?
實務上,除了單欄位的排序外,很多時候會使用多欄位來進行排序,讓單欄位中擁有相同值的資料再透過額外的欄位排序,增加資料的識別度。
而Pandas套件的sort_values()方法(Method)也提供了多欄位的排序方式,利用串列(List)來指定多個欄位名稱即可,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
df.sort_values(by=['Genre', 'User Rating'])
以上的範例,就是先依照書籍類型(Genre)排序,再按讀者評價(User Rating)排序,並且都是升冪排序。
同樣的,如果想要降冪排序,就需設定ascending關鍵字參數為False,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
df.sort_values(by=['Genre', 'User Rating'], ascending=False)
Q:Pandas DataFrame如何多欄位升降冪排序資料?
既然Pandas套件的sort_values()方法(Method)可以多欄位來進行排序,那能不能夠指定各自的升降冪排序呢?
答案是可以的,sort_values()方法(Method)的ascending關鍵字參數同樣可以利用串列(List)的方式,來分別將對應的欄位做升降冪排序,如下範例:
df = pd.read_csv('bestsellers with categories.csv')
df.sort_values(by=['Author', 'Reviews'], ascending=[False, True]).head(25) #取前25筆資料
從執行結果可以看到,書籍作者(Author)為降冪排序,而書籍評論數(Reviews)則為升冪排序。
本文分享了三個使用Pandas套件來排序資料的常見情境,利用sort_values()方法(Method)的by與ascending關鍵字參數,即可對單欄位或多欄位的資料來進行升降冪排序,同時也要特別注意在多欄位排序時,是有順序性的,也就是會按照串列(List)中的欄位名稱先後順序來排序。希望本文的實作能夠幫助大家學會使用Pandas套件的排序資料方法(Method)。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/04/pandas-data-sorting.html )網站觀看更多精彩內容。
2 0 83 2