Python 2.7 dask.async.MemoryError打开到\u csv

Python 2.7 dask.async.MemoryError打开到\u csv,python-2.7,dask,Python 2.7,Dask,在尝试使用dask处理较大数据集中相对较小的子集时,我收到以下错误消息。我在运行dask的GridSearchCV实现时第一次收到这个错误消息。但是,当我试图通过将数据帧写入磁盘来解决它时。下面是错误消息,后面是我试图运行的代码 回溯(最近一次呼叫最后一次): 文件“C:\Program Files(x86)\JetBrains\PyCharm 2017.1\helpers\pydev\pydevd.py”,第1578行,在 globals=debugger.run(setup['file'],

在尝试使用dask处理较大数据集中相对较小的子集时,我收到以下错误消息。我在运行dask的GridSearchCV实现时第一次收到这个错误消息。但是,当我试图通过将数据帧写入磁盘来解决它时。下面是错误消息,后面是我试图运行的代码

回溯(最近一次呼叫最后一次): 文件“C:\Program Files(x86)\JetBrains\PyCharm 2017.1\helpers\pydev\pydevd.py”,第1578行,在

globals=debugger.run(setup['file'],None,None,is_模块)

文件“C:\Program Files(x86)\JetBrains\PyCharm 2017.1\helpers\pydev\pydevd.py”,第1015行,正在运行

pydev_imports.execfile(文件、全局、局部)#执行脚本

文件“C:/Users/Evan/Git/Data\u Analysis\u for\u Exp/SEER Data/SEER\u ML.py”,第73行,在

data.to_csv('data_frame.*.csv'))

文件“C:\Anaconda2\lib\site packages\dask\dataframe\core.py”,第957行,输入到csv

返回到_csv(self,filename,**kwargs)

文件“C:\Anaconda2\lib\site packages\dask\dataframe\io\csv.py”,第445行,输入到\u csv

延迟(值).compute(get=get)

文件“C:\Anaconda2\lib\site packages\dask\base.py”,第95行,在compute中

(结果,)=compute(自我,遍历=False,**kwargs)

文件“C:\Anaconda2\lib\site packages\dask\base.py”,第202行,在compute中

结果=获取(dsk、键、**kwargs)

get中第76行的文件“C:\Anaconda2\lib\site packages\dask\threaded.py” **kwargs)

文件“C:\Anaconda2\lib\site packages\dask\async.py”,第500行,在get\u async中 raise(远程_异常(res,tb))

dask.async.MemoryError:

回溯 文件“C:\Anaconda2\lib\site packages\dask\async.py”,第266行,在执行任务中

结果=_执行_任务(任务、数据)

文件“C:\Anaconda2\lib\site packages\dask\async.py”,第247行,在执行任务中

返回函数(*args2)

文件“C:\Anaconda2\lib\site packages\dask\dataframe\io\csv.py”,第55行,文本为pandas\u read\u

df=读卡器(bio,**kwargs)

解析器中的文件“C:\Anaconda2\lib\site packages\pandas\io\parsers.py”,第646行

返回读取(文件路径或缓冲区,kwds)

文件“C:\Anaconda2\lib\site packages\pandas\io\parsers.py”,第401行,已读

data=parser.read()

文件“C:\Anaconda2\lib\site packages\pandas\io\parsers.py”,第957行,已读

df=数据帧(列=列,索引=索引)

文件“C:\Anaconda2\lib\site packages\pandas\core\frame.py”,第266行,位于init

mgr=self.\u init\u dict(数据、索引、列、数据类型=dtype)

文件“C:\Anaconda2\lib\site packages\pandas\core\frame.py”,第402行,在_init_dict中

将_arrays_返回给_mgr(数组、数据名、索引、列、dtype=dtype)

文件“C:\Anaconda2\lib\site packages\pandas\core\frame.py”,第5408行,在\u arrays\u to \u mgr中

从阵列(阵列、阵列名称、轴)返回创建块管理器

文件“C:\Anaconda2\lib\site packages\pandas\core\internals.py”,第4262行,位于从数组创建\u块\u管理器\u中

块=形成块(数组、名称、轴)

文件“C:\Anaconda2\lib\site packages\pandas\core\internals.py”,第4331行,格式为\u块

浮动块=\u多块化(浮动项)

文件“C:\Anaconda2\lib\site packages\pandas\core\internals.py”,第4408行,在多块化中

值,位置=\堆栈\数组(列表(tup\块),数据类型)

文件“C:\Anaconda2\lib\site packages\pandas\core\internals.py”,第4451行,在堆栈数组中

堆叠=np.空(形状,dtype=dtype)


我注意到您加载了所有列,然后在继续之前删除了一些列-将
usecols
传递到
read\u csv
而从不将它们读入是否有意义?另外,您是否可以指定加载的所有数据类型,而不是执行
astype
?最后,您可以尝试在
read\u csv
中减小
blocksize
。谢谢您的建议。我试过了,但仍然有一个记忆错误。因此,我将在确保我的64位Python解释器及其依赖项都是最新的之后再试一次。作为补充:我检查了我的可用RAM,发现我有大约4GB(略多于4GB)的可用RAM,我正在处理的样本大小约为200MB,因此我不确定问题出在哪里。我注意到您加载了所有列,然后在继续之前删除了一些列-将
usecols
传递到
read\u csv
并且从不读取它们有意义吗?另外,您是否可以指定加载的所有数据类型,而不是执行
astype
?最后,您可以尝试在
read\u csv
中减小
blocksize
。谢谢您的建议。我试过了,但仍然有一个记忆错误。因此,我将在确保我的64位Python解释器及其依赖项等是最新的之后再试一次。作为附录:我检查了我的可用RAM,发现我有大约4GB(略多于4GB)的可用RAM,并且我正在使用的示例大小约为200MB,因此我不确定问题是什么。
data = dataframe.read_csv("Data_Set_for_ML.csv", dtype={'colx': float, 'coly': float,'colz': float})
targets = data['target_col']
drop_these_too = ['target_col', "related_col1", "PID", "related_col2"]
drops = [key for key in list(list_of_features) if key not in 
list(selected_features) and key not in drop_these_too]
data = data.drop(drops, axis=1)
for col in list(data.columns):
    data[col].astype(float)
data.fillna(-9)
data.to_csv('data_frame_*.csv')