首页 > 解决方案 > 内存不足读取和分组 csv 文件包含 300M 行数并按 dask.dataframe 分组

问题描述

我是 Dask 的新手,遇到了一些麻烦。pandas 无法放入内存,所以我改用 Dask.dataframe,我期望 Dask 会处理可以放入内存的小块内容。但是 Dask 仍然用完了所有的内存。它不断导致“进程被杀死

#import pandas as pd
import dask.dataframe as dd
import numpy as np
import timeit
header =['DATE','IMSI','WEBSITE','LINKUP','LINKDOWN','COUNT','CONNECTION']
df = dd.read_csv('/home/mahmoudod/Desktop/to_dict/text1.txt'
                ,names = header
                ,header=0
                )
df.columns.str.strip()
df.DATE = dd.to_datetime(df.DATE, errors='coerce')
group = df.groupby(['IMSI','WEBSITE']).agg({'DATE':[max, min,'count']
    ,'LINKUP':'sum'
    , 'LINKDOWN':'sum'
    , 'COUNT':'sum'
    ,'CONNECTION':'sum'
            }).compute()
group.to_csv('/home/mahmoudod/Desktop/to_dict/output.txt')
print(df.info)
#print(group)

标签: python-3.xpandasdataframedask

解决方案


我的第一个猜测是您的输出结果 ,group非常大并且不适合内存。如果您有很多组,就会出现这种情况。


推荐阅读