【问题标题】:How to optimize chunking of pandas dataframe?如何优化熊猫数据框的分块?
【发布时间】:2018-07-10 22:36:54
【问题描述】:

我需要将我的数据集拆分成块,我目前使用以下简单代码:

    cases = []
    for i in set(df['key']):
        cases.append(df[df['key']==i].copy())

但是我的数据集很大,最终需要几个小时,所以我想知道是否有一种方法可以使用多线程来加速它?或者是否有任何其他方法可以加快速度?

【问题讨论】:

  • 我真的不认为你想走这条路。我认为您需要扩展问题以在更广泛的意义上合并您想要执行的任务(暂时将多处理放在一边)
  • 什么是巨大?行?列?
  • 大约 8000 万行乘 30 列,以及我试图分割的大约 30,000 个唯一键
  • @AntoineBarthelet 多处理是绕过 GIL 的一种方法——pandas,或者主要是 numpy,可以自然地做到这一点。听起来你有一个很好的熊猫问题。我重申,我认为应该放弃多处理方法,你应该让人们仔细检查你试图加速的代码(MCVE

标签: python pandas python-multiprocessing python-multithreading


【解决方案1】:

我相当确定您想按唯一键进行分组。使用内置功能来执行此操作。

cases = list(df.groupby('key'))

【讨论】:

  • 如果数据适合内存,这应该是正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
相关资源
最近更新 更多