Обработка с большими JSON данными в python - PullRequest
5 голосов
/ 09 января 2020

Мой JSON (~ 500 МБ) файл содержит несколько JSON объектов, на самом деле мне просто нужно использовать столбец customer_id. Когда я выполняю приведенный ниже код, он выдает ошибку памяти.

with open('online_pageviews.json') as f:
     online_pageviews = pd.DataFrame(json.loads(line) for line in f)

Вот пример JSON объекта в "online_pageviews. json"

{
"date": "2018-08-01",
"visitor_id": "3832636531373538373137373",
"deviceType": "mobile",
"pageType": "product",
"category_id": "6365313034",
"on_product_id": "323239323839626",
"customer_id": "33343163316564313264"
}

Есть ли способ использовать только столбец "customer_id"? Что я могу сделать, чтобы загрузить этот файл?

1 Ответ

3 голосов
/ 09 января 2020

Вы должны быть в состоянии сделать это, если вы управляете объемом данных, которые у вас есть. Поскольку вам только нужен идентификатор клиента, не беспокойтесь о загрузке любых других данных в ваш фрейм данных.

customer_id_array = []
with open('online_pageviews.json') as f:
    for line in f:
        customer_id_array.append(json.loads(line)['customer_id'])
online_pageviews = pd.DataFrame(customer_id_array,columns = ['customer_id'])

Таким образом, вы можете значительно сократить объем дополнительной памяти, которой вы были ранее используя.

(Я не уверен, сможет ли ваша система справиться с этим, поскольку customer_id_array все еще может стать довольно большим, но это должно быть намного лучше, чем раньше. Если это невозможно, вам, возможно, придется поискать некоторые онлайн-варианты для аренда систем с большей памятью.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...