使用Modin加速Pandas

使用Modin加速Pandas

我最近偶然發現了一個叫做Modin [1]的小型庫,它聲稱可以讓pandas運行的更快。他們用來描述這個項目的其中一句話是:

"通過更改一行代碼來加速你的pandas工作流"

聽起來很有趣,如果是真的話,那就意義重大了。

使用modin只需要導入modin來代替pandas,並且也不需要更改你的現有代碼。

一個警告—— modin目前使用panda 0.20.3(當使用 pip install modin 來安裝modin時,至少需要安裝panda 0.20)。如果你正在使用最新版本的pandas,並且需要以前版本中不存在的新功能,那麼你可能需要檢查一下modin—或者嘗試讓它與最新版本的pandas一起工作(我還沒有這樣做)。

安裝modin:

使用Modin加速Pandas

使用modin:

使用Modin加速Pandas

就是這樣。你只需要使用 import modin.pandas as pd 而不是 import pandas as pd,然後你就可以獲得額外的速度優勢。

根據文檔,modin利用了現代機器上的多核技術,而pandas沒有。從他們的網站可以看到:

使用Modin加速Pandas

Modin提供的一個Read CSV基準

在pandas中,當你做任何類型的計算的時候你每次只能使用一個核心。但是使用Modin,你可以使用機器上的所有CPU內核。即使在read_csv中,通過有效地在整個機器上分佈工作,我們也看到了巨大的成效。

我們來試一試,看看它是如何工作的。

在這個測試中,我將嘗試他們的read_csv方法,因為這是他們所強調的亮點。對於這個測試,我有一個105MB的csv文件。讓我們給pandas 和 modin計時,看看它們是如何工作的。

我們先從pandas開始。

使用Modin加速Pandas

使用pandas,讀取一個105MB csv文件平均需要1.26秒。

現在,我們來看一下modin。

在繼續之前,我應該和大家分享一下,除了執行 pip install modin 之外,我還需要執行一些額外的步驟才能讓modin正常工作。我還必須安裝typing和dask。

使用Modin加速Pandas

使用與上面完全相同的代碼(除了導入modin的一點小更改—— import modin.pandas as pd)。

使用Modin加速Pandas

使用modin時,讀取一個105MB csv文件平均需要0.96秒。

在這個示例中,使用modin,我可以從讀取這個105MB csv文件的平均讀取時間中節省0.3秒。這可能看起來不是很多時間,但是節省了大約27%。想象一下,如果你有5000個大小相似的csv文件要讀取,這平均可以節省1500秒的時間,僅僅在讀取文件上就可以節省25分鐘的時間。

Modin使用Ray [2]來加速pandas,所以如果你使用Ray的一些設置,可能會節省更多的時間。

我將在以後的一些項目中更多的使用modin來提高效率。好好看一下它,然後告訴我你的想法。

相關鏈接:

[1]——https://github.com/modin-project/modin

[2]——https://github.com/ray-project/ray/

英文原文:https://pythondata.com/quick-tip-speed-up-pandas-using-modin/
譯者:一瞬


分享到:


相關文章: