簡(jiǎn)單易懂的pandas排序教程:讓你輕松應(yīng)對(duì)數(shù)據(jù)排序問(wèn)題,需要具體代碼示例
在數(shù)據(jù)分析和處理中,常常需要對(duì)數(shù)據(jù)進(jìn)行排序,以便更好地理解數(shù)據(jù)的特征和規(guī)律。在Python中,pandas庫(kù)是進(jìn)行數(shù)據(jù)分析和處理的重要工具之一。本教程將介紹如何使用pandas快速且靈活地排序數(shù)據(jù),并提供具體的代碼示例。
一、數(shù)據(jù)排序的基本概念
在排序之前,我們需要先了解數(shù)據(jù)排序的基本概念。在pandas中,數(shù)據(jù)的排序主要分為兩種方式:按行排序和按列排序。
按行排序:即將整行數(shù)據(jù)按照某一列或某幾列的數(shù)值大小進(jìn)行排序。這樣可以快速找出某一列或某幾列數(shù)據(jù)的排名。
按列排序:即將整列數(shù)據(jù)按照數(shù)值大小進(jìn)行排序。這樣可以將數(shù)據(jù)按照某一特征進(jìn)行排序,使其更易于理解和分析。
二、按行排序
1.按照單列排序
首先,我們需要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)集,以便演示數(shù)據(jù)排序的過(guò)程。
import pandas as pd data = {'姓名': ['張三', '李四', '王五', '趙六'], '年齡': [25, 32, 28, 19], '分?jǐn)?shù)': [80, 90, 85, 75]} df = pd.DataFrame(data)
登錄后復(fù)制
接下來(lái),我們可以使用”sort_values”函數(shù)對(duì)數(shù)據(jù)進(jìn)行排序。默認(rèn)情況下,該函數(shù)按照指定的列進(jìn)行升序排序。
df_sorted = df.sort_values(by='年齡') print(df_sorted)
登錄后復(fù)制
運(yùn)行結(jié)果如下:
姓名 年齡 分?jǐn)?shù) 3 趙六 19 75 0 張三 25 80 2 王五 28 85 1 李四 32 90
登錄后復(fù)制登錄后復(fù)制
可以看到,在按照”年齡”列進(jìn)行排序后,數(shù)據(jù)被按照升序排列。
2.按照多列排序
如果我們需要按照多列進(jìn)行排序,只需要在”by”參數(shù)中傳入多個(gè)列名即可。
df_sorted = df.sort_values(by=['年齡', '分?jǐn)?shù)']) print(df_sorted)
登錄后復(fù)制
運(yùn)行結(jié)果如下:
姓名 年齡 分?jǐn)?shù) 3 趙六 19 75 0 張三 25 80 2 王五 28 85 1 李四 32 90
登錄后復(fù)制登錄后復(fù)制
可以看到,數(shù)據(jù)首先按照”年齡”列進(jìn)行排序,然后再按照”分?jǐn)?shù)”列進(jìn)行排序。
三、按列排序
按列排序主要是對(duì)整列數(shù)據(jù)按照數(shù)值大小進(jìn)行排序,以便更好地理解和分析數(shù)據(jù)。
1.按照列名排序
我們可以使用”sort_index”函數(shù)對(duì)列進(jìn)行排序。默認(rèn)情況下,該函數(shù)按照列名的字母順序進(jìn)行排序。
df_sorted = df.sort_index(axis=1) print(df_sorted)
登錄后復(fù)制
運(yùn)行結(jié)果如下:
分?jǐn)?shù) 年齡 姓名 0 80 25 張三 1 90 32 李四 2 85 28 王五 3 75 19 趙六
登錄后復(fù)制
可以看到,數(shù)據(jù)按照列名”分?jǐn)?shù)”、”年齡”、”姓名”的字母順序進(jìn)行排序。
2.按照列數(shù)據(jù)排序
我們也可以根據(jù)列數(shù)據(jù)的大小進(jìn)行排序,只需要在”by”參數(shù)中傳入列數(shù)據(jù)即可。
df_sorted = df.sort_values(by='年齡', axis=1) print(df_sorted)
登錄后復(fù)制
運(yùn)行結(jié)果如下:
姓名 分?jǐn)?shù) 年齡 0 張三 80 25 1 李四 90 32 2 王五 85 28 3 趙六 75 19
登錄后復(fù)制
可以看到,數(shù)據(jù)首先按照”年齡”列進(jìn)行排序,然后再按照相應(yīng)的列數(shù)據(jù)進(jìn)行排序。
四、其他排序參數(shù)
除了基本的排序方式外,pandas還提供了其他一些有用的排序參數(shù),例如:升序排序、降序排序、缺失值處理等。
在”sort_values”函數(shù)中,我們可以使用”ascending”參數(shù)指定升序或降序排序。默認(rèn)情況下,該參數(shù)為”True”,即升序排序。
df_sorted = df.sort_values(by='年齡', ascending=False) print(df_sorted)
登錄后復(fù)制
運(yùn)行結(jié)果如下:
姓名 年齡 分?jǐn)?shù) 1 李四 32 90 2 王五 28 85 0 張三 25 80 3 趙六 19 75
登錄后復(fù)制
可以看到,數(shù)據(jù)根據(jù)”年齡”列進(jìn)行降序排序。
除了升序和降序排序,我們還可以在排序過(guò)程中處理缺失值。在”sort_values”函數(shù)中,我們可以使用”na_position”參數(shù)指定缺失值的處理方式。默認(rèn)情況下,該參數(shù)為”last”,將缺失值排在最后;當(dāng)該參數(shù)設(shè)置為”first”時(shí),將缺失值排在最前。
data = {'姓名': ['張三', '李四', '王五', None], '年齡': [25, None, 28, 19], '分?jǐn)?shù)': [80, 90, 85, 75]} df = pd.DataFrame(data) df_sorted = df.sort_values(by='年齡', na_position='first') print(df_sorted)
登錄后復(fù)制
運(yùn)行結(jié)果如下:
姓名 年齡 分?jǐn)?shù) 1 李四 NaN 90 3 None 19.0 75 0 張三 25.0 80 2 王五 28.0 85
登錄后復(fù)制
可以看到,在按照”年齡”列進(jìn)行排序時(shí),缺失值被置于最前。
綜上所述,本教程介紹了簡(jiǎn)單易懂的pandas排序教程,包括按行排序和按列排序兩種方式,并提供了具體的代碼示例。通過(guò)學(xué)習(xí)本教程,相信你能輕松應(yīng)對(duì)數(shù)據(jù)排序問(wèn)題,并在數(shù)據(jù)分析和處理中靈活運(yùn)用。