python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式
1.數(shù)據(jù)排序
DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind="quicksort",na_position="last",ignore_index=False) """ by:要排序的名稱(chēng)列表 axis:軸,0表示行,1表示列 ascending:升序或者降序排列,默認(rèn)是True,升序 inplace:是否直接在數(shù)據(jù)上修改,True為直接修改df,False為副本 kind:指定排序算法, na_position:空值(NaN)的位置,值為first空值在數(shù)據(jù)開(kāi)頭,值為last空值在數(shù)據(jù)最后。 ignore_index:布爾值,是否忽略索引,值為T(mén)rue標(biāo)記索引(從0開(kāi)始順序的整數(shù)值),F(xiàn)alse則忽略索引 """
2.按某列降序排序
import pandas as pd exelFile="C:\\Users\\Administrator\\Desktop\\python數(shù)據(jù)分析Code\\Code\\03\\46\\mrbook.xlsx" df=pd.DataFrame(pd.read_excel(exelFile)) pd.set_option('display.max_rows',1000)#設(shè)置展示最高行數(shù) pd.set_option('display.max_columns',1000)#設(shè)置展示最高列數(shù) pd.set_option('display.unicode.east_asian_width',True) pd.set_option("display.unicode.ambiguous_as_wide",True) #按“銷(xiāo)量”列降序排序 df1=df.sort_values(by="銷(xiāo)量",ascending=False) print(df1)
結(jié)果如圖所示:
3.按多列升降序排列
#先按照?qǐng)D書(shū)名稱(chēng)降序排列,再按照銷(xiāo)量降序排列 df2=df.sort_values(by=["圖書(shū)名稱(chēng)","銷(xiāo)量"])
4.對(duì)統(tǒng)計(jì)結(jié)構(gòu)排序
將類(lèi)別分組并統(tǒng)計(jì)總銷(xiāo)量降序排列。
df3=df.groupby(["類(lèi)別"])["銷(xiāo)量"].sum().reset_index() df4=df3.sort_values(by="銷(xiāo)量",ascending=False) print(df4)
結(jié)構(gòu)如下:
5.數(shù)據(jù)排名
DataFrame.rank(axis-0,method="average",numeric_only=None,na_option="keep",ascending=True,,pct=False) """ axis:軸,0表示行,1表示列 method:表示在相同值的情況下所使用的排序方法,參數(shù)如下:average:默認(rèn)值,平均值排名;min:最小值排名;max:最大值排名;first:按第一次出現(xiàn)的順序排列;dense:密集排序,類(lèi)似于最小值排序,,但排名每次只增加1,相同排名的數(shù)據(jù)只只占據(jù)一個(gè)名詞。 numeric_only:對(duì)于DataFrame,如果設(shè)置值為T(mén)rue,并只對(duì)數(shù)字列進(jìn)行排序。 ascending:升序或者降序排列,默認(rèn)值為T(mén)rue pct:布爾值,是否以百分比形式返回排名,默認(rèn)值為False """
實(shí)例:
對(duì)銷(xiāo)量相同的產(chǎn)品,按照順序排名的平均值進(jìn)行平均排名
#先排序 df=df.sort_values(by="銷(xiāo)量",ascending=False) #按照順序排名的平均值進(jìn)行平均排名 df["順序排名"]=df["銷(xiāo)量"].rank(ascending=False)
這里兩個(gè)數(shù)銷(xiāo)量相同,分別為3和4名,取平均值為3.5
對(duì)銷(xiāo)量相同的產(chǎn)品,按照在原表中出現(xiàn)的順序進(jìn)行排名
#先排序 df=df.sort_values(by="銷(xiāo)量",ascending=False) df["順序排名"]=df["銷(xiāo)量"].rank(method="first",ascending=False)
結(jié)果如下:很正常的結(jié)果
對(duì)銷(xiāo)量相同的產(chǎn)品,按照順序排名并取最小值最為排名
#先排序 df=df.sort_values(by="銷(xiāo)量",ascending=False) df["順序排名"]=df["銷(xiāo)量"].rank(method="min",ascending=False)
排名如下:相同數(shù)量的都按照最小排名填寫(xiě)
對(duì)銷(xiāo)量相同的產(chǎn)品,按照順序排名并取最大值最為排名
#先排序 df=df.sort_values(by="銷(xiāo)量",ascending=False) df["順序排名"]=df["銷(xiāo)量"].rank(method="max",ascending=False)
排名如下:相同數(shù)量的都按照最大排名填寫(xiě)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Anaconda+pycharm安裝及環(huán)境配置全過(guò)程
在使用pyCharm進(jìn)行開(kāi)發(fā)時(shí),需要用到Anaconda創(chuàng)建的環(huán)境,下面這篇文章主要給大家介紹了關(guān)于Anaconda+pycharm安裝及環(huán)境配置的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09基于python for in if 連著寫(xiě)與分開(kāi)寫(xiě)的區(qū)別說(shuō)明
這篇文章主要介紹了基于python for in if 連著寫(xiě)與分開(kāi)寫(xiě)的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03kNN算法python實(shí)現(xiàn)和簡(jiǎn)單數(shù)字識(shí)別的方法
這篇文章主要介紹了kNN算法python實(shí)現(xiàn)和簡(jiǎn)單數(shù)字識(shí)別的方法,詳細(xì)講述了kNN算法的優(yōu)缺點(diǎn)及原理,并給出了應(yīng)用實(shí)例,需要的朋友可以參考下2014-11-11Python 批量刷博客園訪問(wèn)量腳本過(guò)程解析
這篇文章主要介紹了Python 批量刷博客園訪問(wèn)量腳本過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python實(shí)現(xiàn)簡(jiǎn)單的2048小游戲
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單的2048小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03Python元類(lèi)基礎(chǔ)知識(shí)示例深度剖析
這篇文章主要為大家介紹了Python元類(lèi)基礎(chǔ)知識(shí)深度剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06python爬蟲(chóng)之爬取谷歌趨勢(shì)數(shù)據(jù)
這篇文章主要介紹了python爬蟲(chóng)之爬取谷歌趨勢(shì)數(shù)據(jù),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲(chóng)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04