繁体   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