Python利用pandas對(duì)數(shù)據(jù)進(jìn)行特定排序
背景
小編最近在處理hive表存儲(chǔ)大小時(shí),需要對(duì)每個(gè)表的大小進(jìn)行排序,因通過(guò) hadoop fs -du -s -h /path/table
命令獲取的數(shù)據(jù)表大小,其結(jié)果是展示為人能直觀理解的大小,例如 1.1T、1.9G、49.6M 等,如果想對(duì)這些表根據(jù)存儲(chǔ)大小進(jìn)行降序排列,利用pandas應(yīng)該如何做呢?
小編環(huán)境
import sys print('python 版本:',sys.version.split('|')[0]) #python 版本: 3.11.5 import pandas as pd print(pd.__version__) #2.1.0
測(cè)試數(shù)據(jù)
這里僅列舉10行數(shù)據(jù),進(jìn)行演示,小編真實(shí)的hive表有幾萬(wàn)個(gè)
函數(shù)概述
在pandas對(duì)數(shù)據(jù)進(jìn)行排序主要使用 pandas.DataFrame.sort_values
方法
DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
參數(shù)解釋?zhuān)?/strong>
- by :str or list of str用于排序的單個(gè)字段 或 多個(gè)字段組成的列表
- axis:“{0 or ‘index’, 1 or ‘columns’}”, default 0排序時(shí)的軸向,0 表示行向排序(一行一行排序),1表示列向排序(一列一列排序),默認(rèn)是 0,也就是Excel中經(jīng)常使用的排序
- ascending:bool or list of bool, default True升序、降序,默認(rèn)是升序,也就是True,如果是False,則是降序
- 注意:該參數(shù)需要和 上面的
by
參數(shù)要相對(duì)應(yīng) - inplace:bool, default False是否原地更新排序的數(shù)據(jù),默認(rèn)是False,表示調(diào)用該方法后,會(huì)返回一個(gè)新的數(shù)據(jù)框
- kind:{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, default ‘quicksort’進(jìn)行排序時(shí),指定的排序算法,默認(rèn)是
quicksort
,快速排序算法 - na_position:{‘first’, ‘last’}, default ‘last’在排序的數(shù)據(jù)中,指定
NaN
的排序位置,默認(rèn)是排在最后 - ignore_index:bool, default False是否要忽略數(shù)據(jù)的索引,默認(rèn)是 Fasle,不忽略,使用數(shù)據(jù)原本的索引
- key:callable, optional排序之前使用的函數(shù),該函數(shù)需要是矢量化的,也就是傳入?yún)?shù)是
Series
,返回的結(jié)果也需要為Series
,該函數(shù)會(huì)逐個(gè)用在被排序的字段上
官方文檔:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html
完整案例
import pandas as pd data=pd.read_excel('排序數(shù)據(jù).xlsx',sheet_name='排序') key_type={'T':1,'G':2,'M':3,'K':4} data.sort_values(by=['大小2','大小1'], ascending=[True,False], key=lambda col: col.map(key_type) if col.name=='大小2' else col )
到此這篇關(guān)于Python利用pandas對(duì)數(shù)據(jù)進(jìn)行特定排序的文章就介紹到這了,更多相關(guān)pandas 特定排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python數(shù)據(jù)分析Pandas?Dataframe排序操作
- Pandas數(shù)值排序 sort_values()的使用
- python?pandas?數(shù)據(jù)排序的幾種常用方法
- pandas.DataFrame Series排序的使用(sort_values,sort_index)
- pandas中按行或列的值對(duì)數(shù)據(jù)排序的實(shí)現(xiàn)
- pandas?dataframe按照列名給列排序三種方法
- Python使用pandas實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行特定排序
- pandas中DataFrame排序及分組排序的實(shí)現(xiàn)示例
- pandas中數(shù)據(jù)的排序與排名的具體使用
- Pandas排序和分組排名(sort和rank)的實(shí)現(xiàn)
相關(guān)文章
Python序列對(duì)象與String類(lèi)型內(nèi)置方法詳解
這篇文章主要介紹了Python序列對(duì)象與String類(lèi)型內(nèi)置方法,結(jié)合實(shí)例形式分析了Python序列對(duì)象與String類(lèi)型各種常見(jiàn)內(nèi)置方法相關(guān)使用技巧及操作注意事項(xiàng),需要的朋友可以參考下2019-10-10python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法
今天小編就為大家分享一篇python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02淺談python為什么不需要三目運(yùn)算符和switch
下面小編就為大家?guī)?lái)一篇淺談python為什么不需要三目運(yùn)算符和switch。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Python字典生成式、集合生成式、生成器用法實(shí)例分析
這篇文章主要介紹了Python字典生成式、集合生成式、生成器用法,結(jié)合實(shí)例形式分析了Python字典生成式、集合生成式、生成器相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-01-01Python 開(kāi)發(fā)工具PyCharm安裝教程圖文詳解(新手必看)
PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具,比如調(diào)試、語(yǔ)法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制。今天通過(guò)本文給大家分享PyCharm安裝教程,一起看看吧2020-02-02Manjaro、pip、conda更換國(guó)內(nèi)源的方法
這篇文章主要介紹了Manjaro、pip、conda更換國(guó)內(nèi)源的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11詳解Python如何利用Shelve進(jìn)行數(shù)據(jù)存儲(chǔ)
Shelve是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)持久化,本文將詳細(xì)介紹Shelve模塊的功能和用法,并提供豐富的示例代碼,希望對(duì)大家有所幫助2023-11-11詳解python中的三種命令行模塊(sys.argv,argparse,click)
這篇文章主要介紹了python中的三種命令行模塊(sys.argv,argparse,click)的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12