簡體   English   中英

是否可以在同一代碼中更改 Python 中的類似庫(數據分析)?

[英]Is it possibe to change similar libraries (Data Analysis) in Python within the same code?

我使用modin庫進行多處理。 雖然該庫非常適合更快的處理,但它在merge時失敗,我想在代碼之間恢復為默認的 pandas。

我理解根據 PEP 8:E402 約定,導入應該在代碼頂部聲明一次,但是我的情況需要另外聲明。

import pandas as pd
import modin.pandas as mpd    
import os
import ray

ray.init()
os.environ["MODIN_ENGINE"] = "ray"

df = mpd.read_csv()
do stuff

然后我想在相同的代碼中恢復到默認的 pandas 但是我將如何在pandas中執行以下操作,因為在下面的行中似乎沒有一個明確的方法可以從pdmpd切換,不幸的是 modin 似乎優先熊貓。

df = df.loc[:, df.columns.intersection(['col1', 'col2'])]
df = df.drop_duplicates()
df = df.sort_values(['col1', 'col2'], ascending=[True, True])

可能嗎? 如果是,如何?

您可以簡單地執行以下操作:

import modin.pandas as mpd

import pandas as pd

這樣,您就可以在內存中同時擁有 modin 和原始 pandas,並且可以根據需要有效地切換。

由於許多人已經發布了答案,但是在這種特殊情況下,@Nin17 和 Modin GitHub 的評論指出,從 Modin 轉換為 Pandas 以對一些操作(如df.merge )進行單核處理,您可以使用

import pandas as pd
import modin.pandas as mpd    
import os
import ray
ray.init()
os.environ["MODIN_ENGINE"] = "ray"
df_modin = mpd.read_csv() #reading dataframe into Modin for parallel processing
df_pandas = df_modin._to_pandas() #converting Modin Dataframe into pandas for single core processing

如果您想將數據幀重新轉換為 modin 數據幀以進行並行處理

df_modin = mpd.DataFrame(df_pandas)

您可以嘗試 pandarallel 包而不是 modin ,它基於類似的概念: https ://pypi.org/project/pandarallel/#description

Pandarallel 基准測試: https ://libraries.io/pypi/pandarallel

正如@Nin17 在對該問題的評論中所說,來自 Modin GitHub 的這條評論描述了如何將 Modin 數據框轉換為 pandas。 一旦有了 pandas 數據框,就可以在其上調用任何 pandas 方法。 來自同一問題的其他評論描述了如何將 pandas 數據幀轉換回 Modin 數據幀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM