问题是我有299个.csv文件(每个文件150-200 MB,平均数百万行和12列-组成一年的数据(大约52 GB /年)。我有6年并且想要最后将它们全部串联起来),我想用python将其串联成一个.csv文件。如您所料,尝试以下代码时遇到内存错误(我的机器具有16GB的RAM):
import os, gzip, pandas as pd, time
rootdir = "/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函数来转换数据,那是否可能,或者由于文件大小而出现问题吗?
在此先多谢,对本主题的深入说明,我将不胜感激。
眼眸繁星
相关分类