gpt4 book ai didi

python-2.7 - Pandas groupby + transform 花费数小时处理 6 亿条记录

转载 作者:行者123 更新时间:2023-12-04 00:08:45 26 4
gpt4 key购买 nike

我的 DataFrame 3 字段是帐户、月份和薪水。

account month              Salary
1 201501 10000
2 201506 20000
2 201506 20000
3 201508 30000
3 201508 30000
3 201506 10000
3 201506 10000
3 201506 10000
3 201506 10000

我正在对账户和月份进行分组并计算组的薪水总和。然后删除重复项。

MyDataFrame['salary'] = MyDataFrame.groupby(['account'], ['month'])['salary'].transform(sum)
MyDataFrame = MyDataFrame.drop_duplicates()

期望输出如下:

account month              Salary
1 201501 10000
2 201506 40000
3 201508 60000
3 201506 40000

它适用于少数记录。我为 6 亿条记录尝试了相同的,它在 4-5 小时内一直在进行。最初,当我使用 pd.read_csv() 加载数据时,数据获得了 60 GB RAM,直到 1-2 小时 RAM 使用量在 90 到 120 GB 之间。 3 小时后,进程占用 236 GB RAM,并且仍在运行。

请建议是否有其他更快的替代方法。

编辑:现在 15 分钟 在 df.groupby(['account', 'month'], sort=False)['Salary'].sum()

最佳答案

只是跟进 chrisb 的回答和 Alexander 的评论,您确实会从 .sum().agg('sum') 方法中获得更多性能.这是三个的 Jupyter %%timeit 输出:

Timeit results on groupby methods

因此,chrisb 和 Alexander 提到的答案在您非常小的示例数据集上的速度大约是原来的两倍。

此外,根据 Pandas API documentation ,添加 kwarg sort=False 也将有助于提高性能。因此,您的 groupby 应该类似于 df.groupby(['account', 'month'], sort=False)['Salary'].sum()。事实上,当我运行它时,它比上图中显示的运行速度快了大约 10%。

关于python-2.7 - Pandas groupby + transform 花费数小时处理 6 亿条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32722013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com