最近看了某公眾號文章,推薦了所謂的神器,據說讀取速度吊打pandas,可謂牛逼。
抱著學習的精神,網上搜了文章,發現了一些端倪,事實真是這樣嗎?來一起揭祕真相。
- 首先安裝包
# pip install ray # pip install dask # pip install modin
- 安裝版本
Successfully installed aiohttp-3.6.2 async-timeout-3.0.1 google-2.0.3 multidict-4.7.6 py-spy-0.3.3 ray-0.8.5 redis-3.4.1 yarl-1.4.2 Requirement already satisfied: dask in /Applications/anaconda3/lib/python3.7/site-packages (2.11.0) Successfully installed modin-0.7.3 pandas-1.0.3 Successfully uninstalled ray-0.8.5 Successfully installed pyarrow-0.16.0 ray-0.8.4
- 匯入包測試
import modin.pandas as pd
# ImportError: Please `pip install modin[ray]` to install compatible Ray version.
# 首次報錯
# pip install modin[ray]
- 第二次執行
彈窗,點允許,哈哈 # 您要應用程式“redis-server”接受傳入網路連線嗎?
modin.pandas: 76.71852612495422
import time import modin.pandas as pd start = time.time() #Taxi_Trips(正式).csv 5.38G df = pd.read_csv(r'/Users/dugh/Desktop/芝加哥市計程車行車記錄(2013年至今)/Taxi_Trips(正式).csv') end = time.time() print(end-start)
pandas: 71.43032503128052
import time import pandas as pd start = time.time() #Taxi_Trips(正式).csv 5.38G df = pd.read_csv(r'/Users/dugh/Desktop/芝加哥市計程車行車記錄(2013年至今)/Taxi_Trips(正式).csv') end = time.time() print(end-start)
- 第一輪(5.38G):pandas勝出 5 秒
- 第二輪(680.9M):pandas 勝出 3 秒
- 第三輪(3G):pandas勝出 11 秒
- 修改配置
文章說:如果待操作的資料檔案遠大於電腦記憶體RAM,可以設定,那就設定再執行一遍吧
# 如果待操作的資料檔案遠大於電腦記憶體RAM,可以設定 import os os.environ["MODIN_OUT_OF_CORE"]='true' import modin.pandas as pd
驗證下是不是,我設定問題
-----------------------------分割線--------------------------------
- 第一輪(5.38G):pandas勝出 2 秒
- 第二輪(680.9M):pandas 勝出 3 秒
- 第三輪(3G):pandas勝出 12 秒
- 總結:
通過不同的檔案格式和檔案大小,pandas均比modin快,尤其在h5大檔案下,快了將近一半。
真的有那麼神奇嗎?
就算後面改了配置,modin還是沒有變快,到這裡已經無需過多解釋。
- 附錄1
本人測試機配置:19年 15寸 macbook pro 記憶體16g 8核心 系統osx:10.14.6
- 附錄2
本次測試資料
- 附錄3
網友反饋 https://www.jiqizhixin.com/articles/2019-04-13-2