網站首頁 編程語言 正文
python排序并標上序號
需求:利用python實現排序功能
測試數據: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"
第一種常見排序: 將上面數據按照amount字段進行排序
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:此參數的作用是,當遇到兩個值相同時,排序處理的方式。可以取的值有 first、max、min、dense
(1)method =‘first’ 時
表示排序時,序號不會重復且是連續的,遇到相同的值時,會按照數據的先后順序標序號,如下圖:
df['rank']=df['amount'].rank(ascending=0, method='first')
print(df)
(2)method='min’時
表示排序時,遇到相同的值時,后面數的序號與最先出現的數的序號保持一致,如下圖,843.86值重復兩次,排名均為9,且排序中沒有序號10(序號不連續)
df['rank']=df['amount'].rank(ascending=0, method='min')
print(df)
(3)method='max’時
表示排序時,遇到相同的值時,后面數的序號與最后出現的數的序號保持一致,如下圖,843.86值重復兩次,排名均為10,且排序中沒有序號9(序號不連續)
df['rank']=df['amount'].rank(ascending=0, method='max')
print(df)
(4)method='dense’時
表示排序時,遇到相同的值時,重復值序號保持一致,如下圖,843.86值重復兩次,排名均為9,且下一個數序號為10,序號保持連續
df['rank']=df['amount'].rank(ascending=0, method='dense')
print(df)
第二種常見排序:組內排序 ,將上面數據根據id分組,并按照amount字段進行組內排序
df['rank']=df['amount'].groupby(df['id']).rank(ascending=0, method='dense')
#對結果按照id和rank進行升序排列
data=df.sort_values(by=['id','rank'],ascending=(1,1))
Python常見排序算法匯總
所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序算法,就是如何使得記錄按照要求排列的方法。
排序的穩定性
經過某種排序后,如果兩個記錄序號同等,且兩者在原無序記錄中的先后秩序依然保持不變,則稱所使用的排序方法是穩定的,反之是不穩定的。
內排序和外排序
- 內排序:排序過程中,待排序的所有記錄全部放在內存中
- 外排序:排序過程中,使用到了外部存儲。
通常討論的都是內排序。
影響內排序算法性能的三個因素:
- 時間復雜度:即時間性能,高效率的排序算法應該是具有盡可能少的關鍵字比較次數和記錄的移動次數
- 空間復雜度:主要是執行算法所需要的輔助空間,越少越好。
- 算法復雜性。主要是指代碼的復雜性。
Python常用排序算法
原文鏈接:https://blog.csdn.net/d1240673769/article/details/108121309
相關推薦
- 2023-04-19 Android開發服務Service全面講解_Android
- 2022-06-28 KVM基礎命令詳解_Kvm
- 2022-05-23 iOS?Segment帶滑動條切換效果_IOS
- 2022-11-18 React中用@符號編寫文件路徑實現方法介紹_React
- 2022-07-12 修改docker官方鏡像內部內容并重新build鏡像
- 2022-12-26 .NET?6實現滑動驗證碼的示例詳解_實用技巧
- 2022-08-30 MongoD管理數據庫的方法介紹_MongoDB
- 2022-09-05 Linux系統下創建守護進程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支