并行化 groupby:同时将函数应用于 groupby 对象

时间:2021-06-27 14:40:58

标签: python pandas performance for-loop parallel-processing

我想按操作执行一组操作,并为每个组估计一个线性模型。

编写一个函数然后使用 for 循环很容易,但是有点慢。

这是一个玩具示例,但它确实达到了目的。在您看来,实现并行化的“最佳”方式是什么?

一个直观的例子:

C

在这种特殊情况下,我使用 'sleep' 模块来减慢证明 for 循环将花费大量时间的速度,特别是如果我们将按大量独特的类别进行分组。

1 个答案:

答案 0 :(得分:0)

您可以按照@JérômeRichard 的建议使用 multiprocessing 模块以及与 Pool.starmap 一起使用的 groupby

import pandas as pd
import multiprocessing


def regression_model(keys, df):
    print(f'Pool: {keys}')
    # do stuff here
    return df


if __name__ == '__main__':
    data = []
    with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
        data = pool.starmap(regression_model, df.groupby('day'))
        df2 = pd.concat(data)
相关问题