數(shù)據(jù)分析利器pandas排序詳解:讓你的數(shù)據(jù)有序可觀
導(dǎo)語:在進(jìn)行數(shù)據(jù)分析的過程中,對數(shù)據(jù)進(jìn)行排序是非常常見且重要的操作。排序能夠使得數(shù)據(jù)有序可觀,便于我們對數(shù)據(jù)進(jìn)行分析和可視化。在Python中,pandas庫提供了強(qiáng)大的排序功能,本文將詳細(xì)介紹pandas的排序方法,并給出具體的代碼示例。
一、排序的基本概念
在數(shù)據(jù)分析中,排序可以按照某一列或多列進(jìn)行升序或降序排列。其中,升序表示按照從小到大的順序排列,降序表示按照從大到小的順序排列。
二、pandas排序方法
在pandas中,常用的排序方法有兩種:sort_values()和sort_index()。
- sort_values()
sort_values()方法用于按值排序,即按列中的數(shù)值進(jìn)行排序。該方法有以下常用參數(shù):
by:要排序的列名,可以是單個(gè)列名或一個(gè)包含多個(gè)列名的列表。
ascending:排序的方式,True表示升序,F(xiàn)alse表示降序,默認(rèn)為True。
inplace:是否在原數(shù)據(jù)上進(jìn)行修改,True表示在原數(shù)據(jù)上進(jìn)行修改,F(xiàn)alse表示生成一個(gè)新的排序后的數(shù)據(jù)副本,默認(rèn)為False。
- sort_index()
sort_index()方法用于按索引排序,即按行的索引進(jìn)行排序。該方法有以下常用參數(shù):
axis:排序的軸方向,0表示按行索引排序,1表示按列索引排序,默認(rèn)為0。
ascending:排序的方式,True表示升序,F(xiàn)alse表示降序,默認(rèn)為True。
inplace:是否在原數(shù)據(jù)上進(jìn)行修改,True表示在原數(shù)據(jù)上進(jìn)行修改,F(xiàn)alse表示生成一個(gè)新的排序后的數(shù)據(jù)副本,默認(rèn)為False。
三、pandas排序示例
下面通過幾個(gè)實(shí)例來展示pandas的排序功能。
- 按單列排序
假設(shè)有如下一組數(shù)據(jù):
import pandas as pd data = {'姓名': ['Tom', 'Jerry', 'Spike', 'Tyke'], '年齡': [20, 25, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) print(df)
登錄后復(fù)制
輸出結(jié)果為:
姓名 年齡 性別 0 Tom 20 男 1 Jerry 25 男 2 Spike 18 女 3 Tyke 30 男
登錄后復(fù)制
現(xiàn)在我們按照年齡列進(jìn)行降序排序:
df.sort_values(by='年齡', ascending=False, inplace=True) print(df)
登錄后復(fù)制
輸出結(jié)果為:
姓名 年齡 性別 3 Tyke 30 男 1 Jerry 25 男 0 Tom 20 男 2 Spike 18 女
登錄后復(fù)制
- 按多列排序
在某些情況下,我們可能需要按照多個(gè)列進(jìn)行排序。假設(shè)我們將上述數(shù)據(jù)添加一列“工資”,并按照年齡和工資進(jìn)行排序:
data = {'姓名': ['Tom', 'Jerry', 'Spike', 'Tyke'], '年齡': [20, 25, 18, 30], '性別': ['男', '男', '女', '男'], '工資': [5000, 6000, 4000, 7000]} df = pd.DataFrame(data) print(df)
登錄后復(fù)制
輸出結(jié)果為:
姓名 年齡 性別 工資 0 Tom 20 男 5000 1 Jerry 25 男 6000 2 Spike 18 女 4000 3 Tyke 30 男 7000
登錄后復(fù)制
現(xiàn)在我們按照年齡和工資進(jìn)行降序排序:
df.sort_values(by=['年齡', '工資'], ascending=False, inplace=True) print(df)
登錄后復(fù)制
輸出結(jié)果為:
姓名 年齡 性別 工資 3 Tyke 30 男 7000 1 Jerry 25 男 6000 0 Tom 20 男 5000 2 Spike 18 女 4000
登錄后復(fù)制
- 按行索引排序
除了按列排序,我們也可以按照行索引進(jìn)行排序。假設(shè)我們將上述數(shù)據(jù)的行索引修改為[‘c’, ‘a’, ‘b’, ‘d’],然后按行索引進(jìn)行升序排序:
df.index = ['c', 'a', 'b', 'd'] df.sort_index(axis=0, ascending=True, inplace=True) print(df)
登錄后復(fù)制
輸出結(jié)果為:
姓名 年齡 性別 工資 a Jerry 25 男 6000 b Spike 18 女 4000 c Tom 20 男 5000 d Tyke 30 男 7000
登錄后復(fù)制