當前位置:
首頁 > 最新 > Pandas運算的效率探討以及如何選擇高效的運算方式

Pandas運算的效率探討以及如何選擇高效的運算方式

本文就Pandas的運行效率作一個對比的測試,來探討用哪些方式,會使得運行效率較好。

測試環境如下:

windows 7, 64位

python 3.5

pandas 0.19.2

numpy 1.11.3

jupyter notebook

需要說明的是,不同的系統,不同的電腦配置,不同的軟體環境,運行結果可能有些差異。就算是同一台電腦,每次運行時,運行結果也不完全一樣。

1 測試內容

測試的內容為,分別用三種方法來計算一個簡單的運算過程,即 a*a+b*b 。

三種方法分別是:

python的for循環

Pandas的Series

Numpy的ndarray

首先構造一個DataFrame,數據量的大小,即DataFrame的行數,分別為10, 100, 1000, ... ,直到10,000,000(一千萬)。

然後在jupyter notebook中,用下面的代碼分別去測試,來查看不同方法下的運行時間,做一個對比。

執行運算, a*a + b*b

Method 1: for循環

Method 2: Series

Method 3: ndarray

2 測試結果

運行結果如下:

從運行結果可以看出,for循環明顯比Series和ndarray要慢很多,並且數據量越大,差異越明顯。當數據量達到一千萬行時,for循環的表現也差一萬倍以上。而Series和ndarray之間的差異則沒有那麼大。

PS: 1000萬行時,for循環運行耗時特別長,各位如果要測試,需要注意下,請用%%time命令(只測試一次)。

下面通過圖表來對比下Series和ndarray之間的表現。

從上圖可以看出,當數據小於10萬行時,ndarray的表現要比Series好些。而當數據行數大於100萬行時,Series的表現要稍微好於ndarray。當然,兩者的差異不是特別明顯。

所以一般情況下,個人建議,for循環,能不用則不用,而當數量不是特別大時,建議使用ndarray(即df[ col ].values)來進行計算,運行效率相對來說要好些。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

17級新生代言人出現啦
今日推薦:熄不滅的烽火
中國網路防火牆三定律
你從沒見過的霞光彩虹,驚現武漢上空!
是不是每個清華心裡都有北大

TAG:公眾號 |

您可能感興趣

不必糾結iPhone 8和iPhone X之間該怎麼選擇
NodePort,LoadBalancer還是Ingress?我該如何選擇
jordan trainer 2 flyknit:為健身運動元提供更好的鞋款選擇
Kibana或Grafana,時間序列可視化如何選擇?
Manchester by the Sea:是主動選擇還是命運使然
C與Python,初學者應該如何選擇
廉價版iPhoneXc橫空出世,買不起iPhoneX的你會選擇它嗎?
米粉關於MIX 2s與iPhone X的選擇問題的雲評測
廉價版 iPhone Xc 橫空出世,買不起 iPhone X 的你,會選擇它嗎?
一切都是Stein Gates的選擇!
智能音箱調查:iPhone用戶更有意向購買且會選擇Amazon
普通人買手機,iPhone8算不算最佳選擇?
Balenciaga Triple S 改良版正式上架!原價擺在你面前你的選擇是?
HTC Pixel 團隊正式加入 Google 硬體部門,這對雙方都是個好選擇
考慮預算,你會選擇購買哪款iPhone
Mobius 聯合創始人:為什麼選擇 Stellar 而不是以太坊?
為什麼選擇Android和iOS仍然十分重要,答案你絕對想不到
給蘋果的選擇題,iPhone 7和iPhone 8蘋果應該腰斬誰?
索尼新款Walkman應該是一件不錯的選擇
Nike Air Vapormax Flyknit 2.0全新「奧利奧」登場!可能是簡約潮流感的最佳選擇