【问题标题】:Using multiprocessing map with a pandas dataframe?使用带有熊猫数据框的多处理地图?
【发布时间】:2014-06-25 21:16:55
【问题描述】:

我正在使用(python 的)panda 的 map 函数来处理一个大的 CSV 文件(约 50 GB),如下所示:

import pandas as pd

df = pd.read_csv("huge_file.csv")
df["results1"], df["results2"] = df.map(foo)
df.to_csv("output.csv")

有没有办法可以使用并行化?也许使用多处理的地图功能?

谢谢, 何塞

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    请参阅有关按块阅读的文档here,例如here,并附加here

    您最好分块读取 csv,进行处理,然后将其写入 csv(当然,最好转换为 HDF)。

    • 占用相对恒定的内存量
    • 高效,可以并行完成(通常需要有一个 HDF 文件,您可以从中选择部分;csv 不适合此)。
    • 尝试直接进行多处理没有那么复杂

    【讨论】:

    • 请注意(很像 Mongo 数据库中的分片)如果您需要在要映射的操作中重叠数据(如滚动时间序列回归),则块级并行性不能很好地工作。在这些情况下,首先形成 pandas 组并手动将它们分派到不同的资源进行计算会快得多,就像每个分散到 IPython.parallel 中的引擎一样。
    猜你喜欢
    • 2016-02-06
    • 2015-01-26
    • 2019-07-08
    • 2021-05-13
    • 1970-01-01
    • 2021-08-28
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多