溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

發(fā)布時(shí)間:2022-06-10 14:04:31 來(lái)源:億速云 閱讀:500 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)”吧!

python排序并標(biāo)上序號(hào)

需求:利用python實(shí)現(xiàn)排序功能

測(cè)試數(shù)據(jù):data.csv

"id","date","amount"
"1","2019-02-08","6214.23"
"1","2019-02-08","6247.32"
"1","2019-02-09","85.63"
"2","2019-02-14","943.18"
"2","2019-02-15","369.76"
"2","2019-02-18","795.15"
"2","2019-02-19","715.65"
"2","2019-02-21","537.71"
"2","2019-02-24","1037.71"
"3","2019-02-09","967.36"
"3","2019-02-10","85.69"
"3","2019-02-12","769.85"
"3","2019-02-13","943.86"
"3","2019-02-19","843.86"
"3","2019-02-11","85.69"
"3","2019-02-14","843.86"
"1","2019-02-10","985.63"
"1","2019-02-09","285.63"
"1","2019-02-11","1285.63"

第一種常見(jiàn)排序: 將上面數(shù)據(jù)按照amount字段進(jìn)行排序

import pandas as pd
filename="data.csv"
df=pd.read_csv(filename)
#增加一個(gè)rank排序字段
df['rank']=df['amount'].rank(ascending=0, method='first')

說(shuō)明:ascending :1 表示升序,0表示降序

method:此參數(shù)的作用是,當(dāng)遇到兩個(gè)值相同時(shí),排序處理的方式??梢匀〉闹涤?first、max、min、dense

(1)method =‘first’ 時(shí)

表示排序時(shí),序號(hào)不會(huì)重復(fù)且是連續(xù)的,遇到相同的值時(shí),會(huì)按照數(shù)據(jù)的先后順序標(biāo)序號(hào),如下圖:

df['rank']=df['amount'].rank(ascending=0, method='first')
print(df)

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

(2)method='min’時(shí)

表示排序時(shí),遇到相同的值時(shí),后面數(shù)的序號(hào)與最先出現(xiàn)的數(shù)的序號(hào)保持一致,如下圖,843.86值重復(fù)兩次,排名均為9,且排序中沒(méi)有序號(hào)10(序號(hào)不連續(xù))

df['rank']=df['amount'].rank(ascending=0, method='min')
print(df)

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

(3)method='max’時(shí)

表示排序時(shí),遇到相同的值時(shí),后面數(shù)的序號(hào)與最后出現(xiàn)的數(shù)的序號(hào)保持一致,如下圖,843.86值重復(fù)兩次,排名均為10,且排序中沒(méi)有序號(hào)9(序號(hào)不連續(xù))

df['rank']=df['amount'].rank(ascending=0, method='max')
print(df)

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

(4)method='dense’時(shí)

表示排序時(shí),遇到相同的值時(shí),重復(fù)值序號(hào)保持一致,如下圖,843.86值重復(fù)兩次,排名均為9,且下一個(gè)數(shù)序號(hào)為10,序號(hào)保持連續(xù)

df['rank']=df['amount'].rank(ascending=0, method='dense')
print(df)

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

第二種常見(jiàn)排序:組內(nèi)排序 ,將上面數(shù)據(jù)根據(jù)id分組,并按照amount字段進(jìn)行組內(nèi)排序

df['rank']=df['amount'].groupby(df['id']).rank(ascending=0, method='dense')
#對(duì)結(jié)果按照id和rank進(jìn)行升序排列
data=df.sort_values(by=['id','rank'],ascending=(1,1))

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

Python常見(jiàn)排序算法匯總

所謂排序,就是使一串記錄,按照其中的某個(gè)或某些關(guān)鍵字的大小,遞增或遞減的排列起來(lái)的操作。排序算法,就是如何使得記錄按照要求排列的方法。

排序的穩(wěn)定性

經(jīng)過(guò)某種排序后,如果兩個(gè)記錄序號(hào)同等,且兩者在原無(wú)序記錄中的先后秩序依然保持不變,則稱所使用的排序方法是穩(wěn)定的,反之是不穩(wěn)定的。

內(nèi)排序和外排序

  • 內(nèi)排序:排序過(guò)程中,待排序的所有記錄全部放在內(nèi)存中

  • 外排序:排序過(guò)程中,使用到了外部存儲(chǔ)。

通常討論的都是內(nèi)排序。

影響內(nèi)排序算法性能的三個(gè)因素:

  • 時(shí)間復(fù)雜度:即時(shí)間性能,高效率的排序算法應(yīng)該是具有盡可能少的關(guān)鍵字比較次數(shù)和記錄的移動(dòng)次數(shù)

  • 空間復(fù)雜度:主要是執(zhí)行算法所需要的輔助空間,越少越好。

  • 算法復(fù)雜性。主要是指代碼的復(fù)雜性。

Python常用排序算法

python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)

到此,相信大家對(duì)“python怎么實(shí)現(xiàn)排序并標(biāo)上序號(hào)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI