在大型csv文件的块上并行化pandas .groupby()和.agg()

时间:2018-01-16 11:24:05

标签: python pandas csv parallel-processing

我想弄清楚如何并行化(如果可能的话)pandas .groupby()。agg()进程。以下是一个示例设置:

我有一个巨大的(100+ GB)infile.csv文件格式为:

| A | B | C | D | E |
|---|---|---|---|---|
| X | M | 1 | 4 | a |
| X | M | 2 | 3 | b |
| Y | M | 3 | 2 | c |
| Y | N | 4 | 1 | d |

然后我用大块的大熊猫阅读它:

for rows in pd.read_csv(infile.csv, header = 0, index_col=False, chunksize = 6000000)

使用以下内容进行分组聚合:

df=rows.groupby(['A','B'], as_index=False).agg(['C':'sum','D':'max','E':count])

输出(我附加到另一个csv文件)是:

| A | B | C | D | E   |
|   |   |sum|max|count|
|---|---|---|---|-----|
| X | M | 3 | 4 |  2  |
| Y | M | 3 | 2 |  1  |
| Y | N | 4 | 1 |  1  |

问题是这个过程消耗了我的RAM的20%和处理器的1个核心。我相信它可以在桌面上并行化(并因此加速)至少3次,在服务器上更多。有关如何做到这一点的任何建议吗?

如果已经回答这个问题,我很抱歉,但我找不到解决办法。

0 个答案:

没有答案