pandas read_json 成块但仍然有内存错误
pandas read_json in chunks but still has memory error
我正在尝试读取和处理大型 json 文件(~16G),但即使我通过指定 chunksize=500 以小块读取,它仍然存在内存错误。我的代码:
i=0
header = True
for chunk in pd.read_json('filename.json.tsv', lines=True, chunksize=500):
print("Processing chunk ", i)
process_chunk(chunk, i)
i+=1
header = False
def process_chunk(chunk, header, i):
pk_file = 'data/pk_files/500_chunk_'+str(i)+'.pk'
get_data_pk(chunk, pk_file) #load and process some columns and save into a pk file for future processing
preds = get_preds(pk_file) #SVM prediction
chunk['prediction'] = preds #append result column
chunk.to_csv('result.csv', header = header, mode='a')
process_chunk 函数基本上读取每个块并向其附加一个新列。
当我使用较小的文件时它可以工作,如果我在 read_json 函数中指定 nrows=5000 也能很好地工作。似乎出于某种原因,尽管有 chunksize 参数,它仍然需要完整的文件大小内存。
有什么想法吗?谢谢!
我的一个项目的虚拟环境中使用 pandas v1.1.2 时遇到了同样的奇怪问题。
将 pandas 降级到 v1.0.5 似乎可以解决问题。
我正在尝试读取和处理大型 json 文件(~16G),但即使我通过指定 chunksize=500 以小块读取,它仍然存在内存错误。我的代码:
i=0
header = True
for chunk in pd.read_json('filename.json.tsv', lines=True, chunksize=500):
print("Processing chunk ", i)
process_chunk(chunk, i)
i+=1
header = False
def process_chunk(chunk, header, i):
pk_file = 'data/pk_files/500_chunk_'+str(i)+'.pk'
get_data_pk(chunk, pk_file) #load and process some columns and save into a pk file for future processing
preds = get_preds(pk_file) #SVM prediction
chunk['prediction'] = preds #append result column
chunk.to_csv('result.csv', header = header, mode='a')
process_chunk 函数基本上读取每个块并向其附加一个新列。
当我使用较小的文件时它可以工作,如果我在 read_json 函数中指定 nrows=5000 也能很好地工作。似乎出于某种原因,尽管有 chunksize 参数,它仍然需要完整的文件大小内存。
有什么想法吗?谢谢!
我的一个项目的虚拟环境中使用 pandas v1.1.2 时遇到了同样的奇怪问题。 将 pandas 降级到 v1.0.5 似乎可以解决问题。