将数据帧拆分为多个数据帧并并行执行数据帧的过程

时间:2018-01-30 22:20:14

标签: python multithreading python-multiprocessing

我有一个数据帧dfA。这包含超过一百万条记录。 我想根据' GROUP_ID'将数据帧拆分为多个数据帧。然后我想对数据帧执行一些操作。此循环将基于唯一的组ID创建数据框。问题是这段代码需要3天才能运行,所以我试图用多处理方法来计算如何做到这一点。请指教

for group in dfA['GROUP_ID']:
    dftest = dfA.loc[dfA['GROUP_ID'] == group]

1 个答案:

答案 0 :(得分:0)

Dask直接支持pandas,允许在一台机器上进行并行计算或分发。

  

Dask由两部分组成:

     
      
  1. 针对计算优化的动态任务调度。这类似于Airflow,Luigi,Celery或Make,但针对交互式计算工作负载进行了优化。
  2.   
  3. “大数据”集合,如并行数组,数据帧和列表,它们将常见接口(如NumPy,Pandas或Python迭代器)扩展到大于内存或分布式环境。这些并行集合在动态任务调度程序之上运行。
  4.   

从文档中一个简单的pandas示例:

import pandas as pd                     
df = pd.read_csv('2015-01-01.csv')      
df.groupby(df.user_id).value.mean()     

和dask中的相同:

import dask.dataframe as dd
df = dd.read_csv('2015-*-*.csv')
df.groupby(df.user_id).value.mean().compute()