Python中pandas庫(kù)sort_values()方法的使用
Python:pandas庫(kù)sort_values方法的使用
1、起因
今天做到北京瑪達(dá)科技有限公司2021數(shù)據(jù)處理工程師筆試題,有一題是這樣:
按照文件中單詞出現(xiàn)頻次由高往低依次排序,這個(gè)對(duì)我來(lái)說(shuō)很好實(shí)現(xiàn),用上 pandas 的 sort_values 方法就手到擒來(lái)。但是他后面又加上了一個(gè)條件,如果頻次相同的情況下,按照單詞的 MD5 值排序。這可把我迷住了:
- 先用sort_values方法,頻次由高往低依次排,再把頻次相同單獨(dú)拿出來(lái)再用 MD5 排?(因?yàn)閟ort_values排序后,同一頻次的單詞順序會(huì)改變)
- 還是先 MD5 排,再在不改變同一頻次的單詞順序情況下,頻次由高往低依次排?
最后去看了有關(guān)于 sort_values 的文檔,成功解決先把單詞出現(xiàn)頻次由高往低依次排序,再把頻次相同的情況下的單詞按照 MD5 值排序這個(gè)問(wèn)題,下面我?guī)Т蠹一仡櫼幌?Python pandas sort_values() 方法的使用
2、sort_values() 函數(shù)說(shuō)明
pandas 庫(kù)的 sort_values() 函數(shù)可以對(duì) Dataframe 的數(shù)據(jù)集按照某個(gè)字段中的數(shù)據(jù)進(jìn)行排序。該函數(shù)可以指定列數(shù)據(jù)或行數(shù)據(jù)進(jìn)行排序,可以是單個(gè),也可以是 多個(gè)(以前經(jīng)常用來(lái)處理單列/行數(shù)據(jù),忘記了 sort_values() 也可以處理多列/行數(shù)據(jù))。 series 也有 一個(gè) sort_values() 函數(shù),但在參數(shù)上稍有區(qū)別。
官方文檔:pandas.Series.sort_values 和 pandas.DataFrame.sort_values
3、sort_values() 具體參數(shù)
格式如下:
DataFrame.sort_values(by=‘進(jìn)行排序的列名或索引值', axis=0, ascending=True, inplace=False, kind=‘quicksort', na_position=‘last', ignore_index=False, key=None)
參數(shù) | 說(shuō)明 |
---|---|
by | 指定要進(jìn)行排序的列名或索引值 |
axis | 若 axis=0 或 ‘index’,則按照指定 列 的數(shù)據(jù)大小排序;若 axis=1 或 ‘columns’,則按照指定 索引 中數(shù)據(jù)大小排序。默認(rèn)axis=0 |
ascending | 若 ascending=True,則按照升序排序;若 ascending=False,則按降序排序,默認(rèn)為True,即升序排序。如果這是一個(gè) bool 列表,則必須匹配 by 的長(zhǎng)度 |
inplace | 排序后的數(shù)據(jù)是否替換原來(lái)的數(shù)據(jù),默認(rèn)為False,即不替換 |
ignore_index | 是否重置索引,默認(rèn)為不重置 |
4、sort_values() 使用
4.1 單列/行排序
import pandas as pd df = pd.read_csv('test.csv') # 根據(jù)hello列降序排序 data = df.sort_values(by="hello", ascending=False, ,axis=0) # axis=0表示按列,同理axis=1表示按行
4.2 多列/行排序
import pandas as pd df = pd.read_csv('test.csv') # 根據(jù)第一列降序排序,當(dāng)?shù)谝涣邢嗤瑫r(shí),根據(jù)第三列進(jìn)行升序排序。并且重置索引,替換原數(shù)據(jù) data = df.sort_values(by = ['col1','col3'],ascending=[False,True],ignore_index=True,inplace=True)
5、應(yīng)用
所以一開始那道題我這樣寫的:
# -*- coding: utf-8 -*- # --- # @Software: PyCharm # @File: main.py # @Author: WangYunchang # @E-mail: wangyunchang@dxy.cn # @Site: # @Time: 9月 20, 2022 # --- import csv import pandas as pd import hashlib counts = {} # 讀取文件 txt = open("word2count.txt").read() # 將大寫字母轉(zhuǎn)化為小寫 txt = txt.lower() # 把文章中不是英文字母的全部代替為空格 for ch in '0123456789.,()%-': txt = txt.replace(ch, " ") # 分割成列表 words = txt.split() # 統(tǒng)計(jì)單詞 for word in words: counts[word] = counts.get(word, 0) + 1 items = list(counts.items()) # 將所得單詞及數(shù)目寫入csv文件中 csvFile = open('word_result.csv', 'w', newline='') # 寫入表頭,A是單詞,B是出現(xiàn)次數(shù) csv.writer(csvFile).writerow(["A", "MD5", "B"]) # 統(tǒng)計(jì)結(jié)果寫入csv writer = csv.writer(csvFile) for key in counts: # MD5值 ss = hashlib.md5(key.encode('utf-8')).hexdigest() writer.writerow([key, ss, counts[key]]) csvFile.close() df = pd.read_csv('word_result.csv') # 根據(jù)B降序排序,當(dāng)B相同時(shí),根據(jù)MD5進(jìn)行降序排序 data = df.sort_values(by=["B", "MD5"], ascending=[False, False]) # 刪除MD5 data = data.drop(columns="MD5") # 把新的數(shù)據(jù)寫入文件 data.to_csv('word_result.csv', mode='w', index=False)
到此這篇關(guān)于Python中pandas庫(kù)sort_values()方法的使用的文章就介紹到這了,更多相關(guān)pandas庫(kù)sort_values()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pyinstaller打包exe程序的步驟和添加依賴文件的實(shí)現(xiàn)
這篇文章主要介紹了pyinstaller打包exe程序的步驟和添加依賴文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02python+selenium實(shí)現(xiàn)QQ郵箱自動(dòng)發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了python+selenium實(shí)現(xiàn)QQ郵箱自動(dòng)發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Python爬蟲實(shí)例_城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)的爬取方法
下面小編就為大家分享一篇Python爬蟲實(shí)例_城市公交網(wǎng)絡(luò)站點(diǎn)數(shù)據(jù)的爬取方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01對(duì)pandas中兩種數(shù)據(jù)類型Series和DataFrame的區(qū)別詳解
今天小編就為大家分享一篇對(duì)pandas中兩種數(shù)據(jù)類型Series和DataFrame的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Python實(shí)現(xiàn)緩存的兩個(gè)簡(jiǎn)單方法
緩存是一種用于提高應(yīng)用程序性能的技術(shù),它通過(guò)臨時(shí)存儲(chǔ)程序獲得的結(jié)果,以便在以后需要時(shí)重用它們,本文將學(xué)習(xí)Python中的不同緩存技術(shù),感興趣的可以了解下2024-11-11Python實(shí)現(xiàn)調(diào)用jar或執(zhí)行java代碼的方法詳解
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)用jar或執(zhí)行java代碼的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12使用ChatGPT來(lái)自動(dòng)化Python任務(wù)
這篇文章主要介紹了使用ChatGPT來(lái)自動(dòng)化Python任務(wù)的相關(guān)資料,需要的朋友可以參考下2022-12-12Django request.META.get()獲取不到header頭的原因分析
這篇文章主要介紹了Django request.META.get()獲取不到header頭的原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04