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全新「奧利奧」登場!可能是簡約潮流感的最佳選擇