为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫的记忆问题(了解记忆问题)

熊猫的记忆问题(了解记忆问题)

呼啦一阵风 2021-03-31 13:15:57
问题是我有299个.csv文件(每个文件150-200 MB,平均数百万行和12列-组成一年的数据(大约52 GB /年)。我有6年并且想要最后将它们全部串联起来),我想用python将其串联成一个.csv文件。如您所料,尝试以下代码时遇到内存错误(我的机器具有16GB的RAM):import os, gzip, pandas as pd, timerootdir = "/home/eriz/Desktop/2012_try/01"dataframe_total_list = []counter = 0 start = time.time()for subdir, dirs, files in os.walk(rootdir):    dirs.sort()for files_gz in files:    with gzip.open(os.path.join(subdir, files_gz)) as f:         df = pd.read_csv(f)         dataframe_total_list.append(df)         counter += 1         print(counter)total_result = pd.concat(dataframe_total_list)total_result.to_csv("/home/eriz/Desktop/2012_try/01/01.csv", encoding="utf-8", index=False)我的目标是:获取一个.csv文件,然后将其用于训练DL模型等。我的约束:对于大量数据我还是很陌生,但是我已经完成了部分工作:我知道多处理对我的发展无济于事。这是一项顺序工作,我需要完成每个任务,以便我可以开始下一个任务。主要问题是内存用完。我知道,即使添加了块大小,大熊猫也可以很好地工作。但是,由于数据量巨大,因此内存问题仍然存在。我试图将工作分解为一些小任务,以免耗尽内存,但是无论如何我以后会在连接时使用它。我的问题:仍然可以用我不知道的任何其他方式使用python / pandas来执行此任务,或者无论使用哪种数据库方法,都需要切换?你能建议哪个吗?如果数据库方法是唯一途径,那么当需要执行基于python的操作来训练DL模型时,我会遇到问题吗?我的意思是,如果我需要使用pandas / numpy函数来转换数据,那是否可能,或者由于文件大小而出现问题吗?在此先多谢,对本主题的深入说明,我将不胜感激。
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

在尝试并使用了@mdurant指出的以下代码段后,我学到了很多东西,并更正了关于dask内存问题的观点。

经验教训:

  • Dask在执行第一个预处理任务之后是否可以使用它(如果最终您最终会得到巨大的文件,而熊猫则很难加载/处理它们)。获得“所需”的庞然大物文件后,您可以将其加载到dask.dataframe对象中,而不会出现任何问题并进行处理。

  • 与内存相关: 第一课-提出一个过程,这样您就不必合并所有文件,并且用完了内存;只需处理它们的循环并通过更改dtype,删除列,重采样来减少其内容...第二课-尝试仅将所需的内容存储到内存中,以免耗尽。第三课-如果没有其他课程,请寻找EC2实例,Spark,SQL等大数据工具。


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信