Pandas json_normalize在Python中不使用大型JSON文件

时间:2014-06-27 19:23:53

标签: python json pandas

我正在尝试使用json_normalize()函数将大型(约900 MB)json文件规范化为pandas DataFrame。这适用于我正在处理的所有其他文件(大小约为150-500 MB),尽管每个文件都需要几分钟才能完成。然而,对于这个文件,它似乎只是永远运行,永远不会完成。我已经尝试在规范化之前使用read_json()将json文件直接读入DataFrame,并且只需使用json.loads()从文件中加载json。两种方法都有相同的结果。我正在使用的代码是:

import pandas as pd
import json

path = mf.getPath('dataFile.json')
testTrials = json.loads(open(path)) #testTrials = pd.read_json(path)
testTrials = json_normalize(testTrials['rows'])

1 个答案:

答案 0 :(得分:0)

您可以将大JSON文件拆分为多个块并一次处理一个块。像这样的代码:

from itertools import zip_longest

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

dfs = []
chunk_size = 1000
for json in grouper(jsons,chunk_size):
    df = json_normalize(json)
    dfs.append(df)
pd.concat(dfs)