目錄
- 安裝動機
- Modin庫簡介
- 安裝流程
- 1. 在Windows設定中調整設定
- 2. 在Windows應用商店中下載Ubuntu
- 3. 配置Ubuntu
- 4. 安裝Modin庫
- 先說說我的安裝方法
- 接下來說說官方的方案:
- Modin庫性能測驗
- read_csv 測驗
- fill_na 測驗
- 總結
- 鳴謝
安裝動機
最近在用Pandas處理一些大資料集時明顯感受到了Pandas的缺陷:只能使用CPU的一個核心來計算,對于我新買的8核16執行緒的機子來說,有大量資源都被浪費了,
本著加速Pandas運行的動機,上網搜索了很多能充分利用本地CPU資源的措施,但是看了一些諸如threading, multiprocessing之類的庫,還是感徑訓境的部署有些難以理解,其中的運用也有一些限制(比如自定義函式必須有回傳值),對于像我這樣非CS專業背景的人來說還是不夠友好,最終發現了這個號稱能夠實作一行代碼加速Pandas運行的Modin庫(事實上也確實如此),鼓搗了一整天之后終于成功實作了Pandas的充分并行加速,
雖然使用起來非常方便,但在安裝程序中走了不少彎路,網上也沒有非常明確的資訊指導安裝,因此寫下這篇文章,以免后來者再重蹈覆轍,
Modin庫簡介

Modin 是加州大學伯克利分校 RISELab 的一個早期專案,旨在促進分布式計算在資料科學領域的應用,它是一個多行程的資料幀(Dataframe)庫,具有與 Pandas 相同的應用程式介面(API),使用戶可以加速他們的 Pandas 作業流,
在一臺 8 核的機器上,用戶只需要修改一行代碼,Modin 就能將 Pandas 查詢任務加速 4 倍,
該系統是為希望程式運行得更快、伸縮性更好,而無需進行重大代碼更改的 Pandas 用戶設計的,這項作業的最終目標是能夠在云環境中使用 Pandas,
如果對Modin庫具體的作業流程感興趣,請參考機器之心的知乎文章-想讓pandas運行更快嗎?那就用Modin吧
安裝流程
必須要指出的是,只有Window 10系統才能支持以下的安裝流程
由于Windows環境下并不直接支持Ray,而Ray是安裝Modin所必須的,因此我們需要使用WSL(適用 Linux 的 Windows 子系統),整體的流程也因此比以往pip即可的流程變得復雜了一些
總體來說分為四步:
-
在Windows設定中調整設定
-
在Windows應用商店中下載Ubuntu
-
配置Ubuntu
-
安裝Modin庫
1. 在Windows設定中調整設定
在控制面板中搜索“功能”


選中后會設定一段時間(約20s),之后會重啟
2. 在Windows應用商店中下載Ubuntu
在Windows應用商店中搜索Ubuntu,安裝,一切按照默認設定即可,

3. 配置Ubuntu
安裝好之后會要求設定用戶名和密碼(這部分忘記截圖了,但是內容也比較少)
用戶名:小寫字母即可,不能設定大寫或下劃線等,會報錯
密碼:密碼是隱形的,所以如果你按下鍵盤之后發現沒有動靜,不要懷疑是卡住了,確保輸入正確后按下回車,會讓你再次輸入確認的
4. 安裝Modin庫
先說說我的安裝方法
因為我在使用官方方法時遇到了一些問題,但是又沒查詢到解決的方案,所以自己另辟蹊徑,竟然也成功了,
直接打開cmd,建議掛上VPN,輸入:
pip install modin[all]
就會連Modin帶Ray一起安裝,測驗使用時只有很少的情況會無法成功匯入,但只要再次嘗試import,通常都會成功(這部分下文細談)
接下來說說官方的方案:
Install Ray with
pip install -U ray. For the latest wheels (a snapshot of the master branch), you can use the instructions at Latest Snapshots (Nightlies).
也就是在Linux環境中輸入pip install -U ray安裝Ray,然后再pip install modin安裝Modin即可
在這里我出現了一個問題:我的Linux中沒有pip模塊,所以我回到了Windows環境中pip了,
如果沒有pip模塊,應該先安裝pip.exe,接下來的步驟是參考的@a013067506e4在其博客里的方法,但未經過我的測驗:
- 使用以下代碼安裝Ray(這里加了個豆瓣的源)
pip.exe install -U ray -i https://pypi.doubanio.com/simple/- 然后再使用以下代碼安裝Modin
pip.exe install modin -i https://pypi.doubanio.com/simple/
Modin庫性能測驗
首先匯入,非常方便
# 用modin.pandas 代替 pandas,并仍舊命名為pd
import modin.pandas as pd
import numpy as np
read_csv 測驗
CPU配置:AMD R7 4800H(8核)

19.2s,接下來看看普通Pandas的速度

42.8s,使用Modin可以提速一倍以上,
事實上我第一次讀取這個資料集的時候花費時差大概在一分半鐘左右…
fill_na 測驗

使用Modin填充空值,需要97.9s

但是使用普通Pandas,只需要1s…
說明modin對于一些函式的支持還是不夠好,甚至比普通的Pandas還慢許多
具體的原因我也沒有理解,所以可以看到modin并非對所有pandas介面都能加速,但如果使用普通介面速度過于慢的時候,換用modin也許是個有益的嘗試,事實上在運行代碼時我也在監視著任務管理器,發現啟動多執行緒也是需要一些時間的,這意味著,如果資料集不夠大(或者任務量不夠大),多執行緒帶來的好處可能還不及啟動多執行緒的時間成本
總結
- 安裝modin比較麻煩,但使用起來很簡單,可以用來作為pandas運行速度較慢時的加速嘗試
- 根據官方檔案,modin支持約71%的pandas介面,若沒有覆寫到的介面則會自動使用標準pandas介面(如to_csv),所以理論上來說,使用modin本應該是個絕對占優策略
- 但是在實際測驗中,發現部分介面的速度還不如用pandas,原因未知,因此終極建議是:先用普通介面,如果所有介面都使用后還是很慢,再使用modin
鳴謝
感謝在我安裝程序中提供支持的三篇博客
- 簡書-windows10下安裝Modin,作者@a013067506e4
- CSDN-mac python3.8使用modin.pandas報錯Please pip install modin[ray] to install compatible Ray version.,作者@大臉猿
- 知乎-pandas升級版——modin,作者 @馬東什么
最后,感謝我家親愛的@上財李榮浩 大晚上幫我測驗了好幾個演算法的時間(幫他微博漲粉!)(也可以關注CSDN-上財李榮浩!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/245248.html
標籤:其他
