數(shù)據(jù)處理性能對比(Python原生vs Pandas vs Numpy)
對于任何數(shù)據(jù)科學(xué)家來說,速度和時間都是一個關(guān)鍵因素。在商業(yè)活動中,通常不會使用僅僅有數(shù)千個樣本的玩具數(shù)據(jù)集。大部分時候你的數(shù)據(jù)集包括數(shù)百萬或數(shù)億個樣本??蛻粲唵?,網(wǎng)絡(luò)日志,帳單活動,股票價格等 - 現(xiàn)在的數(shù)據(jù)集非常龐大。
我猜你不會想花幾個小時或幾天,等待你的數(shù)據(jù)處理完成。迄今為止,我所使用的***數(shù)據(jù)集包含超過3000萬條記錄。當(dāng)我***次運行數(shù)據(jù)處理腳本時,預(yù)估的完成時間約為4天!我沒有非常強大的機器(Macbook Air與i5和4 GB的RAM),但我可以保證一晚上運行完腳本而不是數(shù)天。
感謝一些聰明的技巧,我能夠?qū)⑦@個運行時間縮短到幾個小時。這篇文章將解釋實現(xiàn)良好數(shù)據(jù)處理性能的***步 - 為您的數(shù)據(jù)集選擇正確的庫/框架。
下圖顯示了我的實驗結(jié)果(詳情如下),與純Python的處理速度做出對比。
如你所見,Numpy的表現(xiàn)比Pandas的表現(xiàn)要好幾倍。我個人喜歡用Pandas來簡化許多繁瑣的數(shù)據(jù)科學(xué)任務(wù),它是我的***工具。但是如果預(yù)計的處理時間超過多個小時,那么很遺憾,我只能使用Numpy來替代Pandas。
我非常清楚實際的性能可能會有很大的不同,這取決于任務(wù)和處理類型。所以請把這些結(jié)果僅僅作為參考。沒有任何一個單獨的測試可以全面對比所有軟件工具的性能。
簡介
在下面的 Notebook 中你將會比較 Python 原生方法, Pandas 和 Numpy 處理數(shù)據(jù)的速度。
導(dǎo)入模塊
制作模擬隨機數(shù)據(jù)集
Python 原生方法
Pandas 方法
Numpy 方法
檢查是否所有的方法生成同樣的結(jié)果
比較運行時間
Python average time: 38.77917420864105 seconds
Pandas average time: 10.483694124221802 seconds
Numpy average time: 2.914765810966492 seconds
展示結(jié)果