python如何實現(xiàn)排序,并標(biāo)上序號
python排序并標(biāo)上序號
需求:利用python實現(xiàn)排序功能
測試數(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"
第一種常見排序: 將上面數(shù)據(jù)按照amount字段進(jìn)行排序
import pandas as pd filename="data.csv" df=pd.read_csv(filename) #增加一個rank排序字段 df['rank']=df['amount'].rank(ascending=0, method='first')
說明:ascending :1 表示升序,0表示降序
method:此參數(shù)的作用是,當(dāng)遇到兩個值相同時,排序處理的方式??梢匀〉闹涤?first、max、min、dense
(1)method =‘first’ 時
表示排序時,序號不會重復(fù)且是連續(xù)的,遇到相同的值時,會按照數(shù)據(jù)的先后順序標(biāo)序號,如下圖:
df['rank']=df['amount'].rank(ascending=0, method='first') print(df)
(2)method='min’時
表示排序時,遇到相同的值時,后面數(shù)的序號與最先出現(xiàn)的數(shù)的序號保持一致,如下圖,843.86值重復(fù)兩次,排名均為9,且排序中沒有序號10(序號不連續(xù))
df['rank']=df['amount'].rank(ascending=0, method='min') print(df)
(3)method='max’時
表示排序時,遇到相同的值時,后面數(shù)的序號與最后出現(xiàn)的數(shù)的序號保持一致,如下圖,843.86值重復(fù)兩次,排名均為10,且排序中沒有序號9(序號不連續(xù))
df['rank']=df['amount'].rank(ascending=0, method='max') print(df)
(4)method='dense’時
表示排序時,遇到相同的值時,重復(fù)值序號保持一致,如下圖,843.86值重復(fù)兩次,排名均為9,且下一個數(shù)序號為10,序號保持連續(xù)
df['rank']=df['amount'].rank(ascending=0, method='dense') print(df)
第二種常見排序:組內(nèi)排序 ,將上面數(shù)據(jù)根據(jù)id分組,并按照amount字段進(jìn)行組內(nèi)排序
df['rank']=df['amount'].groupby(df['id']).rank(ascending=0, method='dense') #對結(jié)果按照id和rank進(jìn)行升序排列 data=df.sort_values(by=['id','rank'],ascending=(1,1))
Python常見排序算法匯總
所謂排序,就是使一串記錄,按照其中的某個或某些關(guān)鍵字的大小,遞增或遞減的排列起來的操作。排序算法,就是如何使得記錄按照要求排列的方法。
排序的穩(wěn)定性
經(jīng)過某種排序后,如果兩個記錄序號同等,且兩者在原無序記錄中的先后秩序依然保持不變,則稱所使用的排序方法是穩(wěn)定的,反之是不穩(wěn)定的。
內(nèi)排序和外排序
- 內(nèi)排序:排序過程中,待排序的所有記錄全部放在內(nèi)存中
- 外排序:排序過程中,使用到了外部存儲。
通常討論的都是內(nèi)排序。
影響內(nèi)排序算法性能的三個因素:
- 時間復(fù)雜度:即時間性能,高效率的排序算法應(yīng)該是具有盡可能少的關(guān)鍵字比較次數(shù)和記錄的移動次數(shù)
- 空間復(fù)雜度:主要是執(zhí)行算法所需要的輔助空間,越少越好。
- 算法復(fù)雜性。主要是指代碼的復(fù)雜性。
Python常用排序算法
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)據(jù)分析的八種處理缺失值方法詳解
缺失值可能是數(shù)據(jù)科學(xué)中最不受歡迎的值,然而,它們總是在身邊。忽略缺失值也是不合理的,因此我們需要找到有效且適當(dāng)?shù)靥幚硭鼈兊姆椒?/div> 2021-11-11研究Python的ORM框架中的SQLAlchemy庫的映射關(guān)系
這篇文章主要介紹了研究Python的ORM框架中的SQLAlchemy庫的映射關(guān)系,SQLAlchemy庫是一個常見的Python中操作數(shù)據(jù)庫的工具,需要的朋友可以參考下2015-04-04TensorFlow的環(huán)境配置與安裝教程詳解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7
這篇文章主要介紹了TensorFlow的環(huán)境配置與安裝(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-06-06git使用.gitignore設(shè)置不生效或不起作用問題的解決方法
下面小編就為大家?guī)硪黄猤it使用.gitignore設(shè)置不生效或不起作用問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06最新評論