Pandas json_规范化不使用Python中的大型json文件

Pandas json_规范化不使用Python中的大型json文件,python,json,pandas,Python,Json,Pandas,我正在尝试使用json_normalize()函数将一个大的(大约900 MB)json文件规范化为一个数据帧。这适用于我正在处理的所有其他文件(大小约为150-500 MB),尽管每个文件都需要几分钟才能完成。然而,这个文件似乎永远运行,永远不会结束。我尝试过在规范化之前使用read_json()将json文件直接读取到数据帧中,以及使用json.loads()从文件中简单加载json。两种方法的结果相同。我使用的代码是: import pandas as pd import json pa

我正在尝试使用json_normalize()函数将一个大的(大约900 MB)json文件规范化为一个数据帧。这适用于我正在处理的所有其他文件(大小约为150-500 MB),尽管每个文件都需要几分钟才能完成。然而,这个文件似乎永远运行,永远不会结束。我尝试过在规范化之前使用read_json()将json文件直接读取到数据帧中,以及使用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'])

您可以将大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) 

你的系统有多少内存?数据结构的嵌套程度如何?是否需要将所有数据加载到帧中?如果
nested\u to\u record
(由
json\u normalize
使用)对每个dict进行深度复制,您将需要大量内存,我认为超过3-4Gb。查看有多少RAM使用500MB文件进行估算。@Rho它限制了可用的8GB RAM。我使用了一种新方法,使用ijson逐行读取,这允许过程完成,但需要30分钟。