将大型JSON文件加载到数据框中

时间:2020-02-21 02:32:21

标签: python json dataframe large-files

我正在尝试将一些大的JSON文件加载到数据帧中。我已经能够加载多达450 MB的文件,包含约220万条记录。我得到的最大文件约为800 MB。当我尝试加载最大的文件时,它使我的容器崩溃(退出代码为137)。

我尝试了以下两种方法:

import json
import pandas as pd


def load_json(jpath):
    data = [json.loads(line) for line in open(jpath, 'r')]
    print('JSON file has been loaded in memory')
    print()
    # df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
    df2 = pd.DataFrame.from_records(data=data, columns=['col1', 'col2', 'col3'])
    print('JSON has been loaded in Dataframe')
    return df2

def load_json2(jpath):
    data_iterator = pd.read_json(jpath, chunksize=100000, lines=True)
    chunk_list = []
    for data_chunk in data_iterator:
        filtered_chunk = data_chunk.filter(items=['col1', 'col2', 'col3'])
        chunk_list.append(filtered_chunk)
        print('chunk appended')
        print()

    df = pd.concat(chunk_list)
    return df

第二种方法似乎很慢。永远花费450 MB的大小来加载文件,而方法1花费不到一分钟的时间来加载该文件。但是方法1也会导致文件大小为800 MB的容器崩溃。

有什么建议吗?

0 个答案:

没有答案
相关问题