利用python實現排序,並標上序號

2021-10-23 13:39:40 字數 3018 閱讀 6716

需求:利用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 :此引數的作用是,當遇到兩個值相同時,排序處理的方式。可以取的值有firstmaxmindense

(1) method =『first』 時:表示排序時,序號不會重複且是連續的,遇到相同的值時,會按照資料的先後順序標序號,如下圖:

(2)method='min』時:表示排序時,遇到相同的值時,後面數的序號與最先出現的數的序號保持一致,如下圖,843.86值重複兩次,排名均為9,且排序中沒有序號10(序號不連續)

(3)method='max』時:表示排序時,遇到相同的值時,後面數的序號與最後出現的數的序號保持一致,如下圖,843.86值重複兩次,排名均為10,且排序中沒有序號9(序號不連續)

(4)method='dense』時:表示排序時,遇到相同的值時,重複值序號保持一致,如下圖,843.86值重複兩次,排名均為9,且下乙個數序號為10,序號保持連續

第二種常見排序:組內排序,將上面資料根據id分組,並按照amount欄位進行組內排序

df[

'rank'

]=df[

'amount'

].groupby(df[

'id'])

.rank(ascending=

0, method=

'dense'

)#對結果按照id和rank進行公升序排列

Python實現座標上公升演算法

場景 已知f x1,x2 x1 2 3 x2 2 2 x1 x2 6,求當f x1,x2 取得最大值時,x1和x2的值分別是多少?f x1,x2 對x1的偏導 f x1 2 x1 2 x2,令f x1 0,x1 x2 f x1,x2 對x2的偏導 f x2 6 x2 2 x1,令f x2 0,x2 ...

利用Python實現氣泡排序

今天說乙個比較簡單易懂的演算法,相信大家在大學裡面肯定都有接觸過。在這裡介紹排序演算法的一種氣泡排序,對於初學python的新人來說因該很容易理解。排序顧名思義,對給定的一串字元 其實也不一定是字元,可以是其他可比較的元素 按照從大到小或者從小到大的順序排列。演算法原理 1.從第一位開始比較相鄰的兩...

python利用flask實現檔案上傳並儲存

usr bin python3 encoding utf 8 來自官網,但官網的不能直接用,稍微修改了一下,秒秒鐘執行成功,哈哈哈哈 import os from flask import flask,request,redirect,url for from werkzeug.utils impo...