Python如何處理大數(shù)據?3個技巧效率提升攻略(推薦)
如果你有個5、6 G 大小的文件,想把文件內容讀出來做一些處理然后存到另外的文件去,你會使用什么進行處理呢?不用在線等,給幾個錯誤示范:有人用multiprocessing 處理,但是效率非常低。于是,有人用python處理大文件還是會存在效率上的問題。因為效率只是和預期的時間有關,不會報錯,報錯代表程序本身出現(xiàn)問題了~
所以,為什么用python處理大文件總有效率問題?
如果工作需要,立刻處理一個大文件,你需要注意兩點:
01、大型文件的讀取效率
面對100w行的大型數(shù)據,經過測試各種文件讀取方式,得出結論:
with open(filename,"rb") as f: for fLine in f: pass
方式最快,100w行全遍歷2.7秒。
基本滿足中大型文件處理效率需求。如果rb改為r,慢6倍。但是此方式處理文件,fLine為bytes類型。但是python自行斷行,仍舊能很好的以行為單位處理讀取內容。
02、文本處理效率問題
這里舉例ascii定長文件,因為這個也并不是分隔符文件,所以打算采用列表操作實現(xiàn)數(shù)據分割。但是問題是處理20w條數(shù)據,時間急劇上升到12s。本以為是byte.decode增加了時間。遂去除decode全程bytes處理。但是發(fā)現(xiàn)效率還是很差。
最后用最簡單方式測試,首次運行,最簡單方式也要7.5秒100w次。
想知道這個方式處理的完整代碼是什么嗎?掃描文末二維碼,聯(lián)系小編可以獲取哦~
那么關于python處理大文件的技巧,從網絡整理三點:列表、文件屬性、字典三個點來看看。
1.列表處理
def fun(x):盡量選擇集合、字典數(shù)據類型,千萬不要選擇列表,列表的查詢速度會超級慢,同樣的,在已經使用集合或字典的情況下,不要再轉化成列表進行操作,比如:
values_count = 0 # 不要用這種的 if values in dict.values(): values_count += 1 # 盡量用這種的 if keys,values in dict: values_count += 1
后者的速度會比前者快好多好多。
2. 對于文件屬性
如果遇到某個文件,其中有屬性相同的,但又不能進行去重操作,沒有辦法使用集合或字典時,可以增加屬性,比如將原數(shù)據重新映射出一列計數(shù)屬性,讓每一條屬性具有唯一性,從而可以用字典或集合處理:
return '(' + str(x) + ', 1)'
list(map(fun,[1,2,3]))
使用map函數(shù)將多個相同屬性增加不同項。
3. 對于字典
多使用iteritems()少使用items(),iteritems()返回迭代器:
>>> d = {'a':1,'b':2}
>>> for i in d.items() :
.... print i
('a',1)
('b',2)
>>> for k,v in d.iteritems() :
... print k,v
('a',1)
('b',2)
字典的items函數(shù)返回的是鍵值對的元組的列表,而iteritems使用的是鍵值對的generator,items當使用時會調用整個列表 iteritems當使用時只會調用值。
除了以下5個python使用模塊,你還有什么技巧解決大文件運行效率的問題嗎?深入了解更多Python實用模塊,快速提升工作效率~
讀寫文件技術,今后會用到測試數(shù)據的參數(shù)化和測試報告寫作功能中~
數(shù)據處理技術,今后測試腳本的測試數(shù)據處理過程可以用到~
數(shù)據統(tǒng)計分析技術,今后會在測試結果分析中用到
圖表展示技術,在今后的測試框架中相關測試報告會用到
程序自動觸發(fā)技術,可用于測試腳本程序的自動執(zhí)行。
以上所述是小編給大家介紹的Python如何處理大數(shù)據?3個技巧效率提升攻略詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
Python Numpy實現(xiàn)修改數(shù)組形狀
NumPy(Numerical Python)是Python中用于處理數(shù)組和矩陣的重要庫,它提供了豐富的功能,用于科學計算,本文主要介紹了如何使用NumPy提供的方法來改變數(shù)組的形狀,感興趣的可以了解下2023-11-11
python?replace?空格數(shù)據處理的實現(xiàn)
本文主要介紹了python?replace?空格數(shù)據處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
pyqt5 tablewidget 利用線程動態(tài)刷新數(shù)據的方法
今天小編就為大家分享一篇pyqt5 tablewidget 利用線程動態(tài)刷新數(shù)據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
python 已知一個字符,在一個list中找出近似值或相似值實現(xiàn)模糊匹配
今天小編就為大家分享一篇python 已知一個字符,在一個list中找出近似值或相似值實現(xiàn)模糊匹配,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python GUI庫圖形界面開發(fā)之PyQt5多線程中信號與槽的詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5多線程中信號與槽的詳細使用方法與實例,需要的朋友可以參考下2020-03-03

