需求:利用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』 時:表示排序時,序號不會重複且是連續的,遇到相同的值時,會按照資料的先後順序標序號,如下圖:
(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...