Java

KEEP CALM and JSON

Время прочтения: 2 мин.

Мы живем в эпоху больших данных, но не всегда эти данные сразу пригодны для решения поставленных задач. Представьте, вы наконец-то нашли ту информацию, которая необходима вам для анализа, открываете, а там… длинная строка сплошного текста с сложно интерпретируемой структурой. Спокойно, это JSON, и за последние 15 лет он стал стандартом обмена информацией.

JSON (JavaScript Object Notation) – простой, основанный на использовании текста, способ хранить и передавать структурированные данные. Как можно догадаться из названия, JSON изначально основывается на языке JavaScript, но благодаря своей универсальности и гибкости отлично работает на разных платформах.

В своей работе мы столкнулись с необходимостью проанализировать csv файл с расчетными данными по клиентам общим размером 85 Гб. Ключевая информация представлена в колонке в формате JSON «ключ-значение».

idlevelamountoper datenum idstr as json
100003981235000.002020-06-025712166429«{«status»: {«Code»: 0,»Desc»:
«POS»}, «gId»: «F135*****422»,
«TypeID»: «A»,»Results»:
{«Results»: [{«Index»: 3,   

,»ttl»: 10000,»Id»: 13*****654},]},
«eId»: «254*****894»,
«Flag»: true,»channelSales»: Y}}]}}»

При простом импорте csv файла в dataframe колонка, содержащая JSON, не будет автоматически сформирована в табличном виде, что затруднит эффективную работу с данными.  Выходом является преобразовать данные JSON в объект Python Pandas.

Учитывая большой объем данных и ограниченные ресурсы АРМ, логично использовать пакетную обработку csv файла. Будем считывать по 100 тыс. строк, выбирая только требуемый период и необходимые «ключи-столбцы».

В результате получилась плоская таблица, доступная для дальнейшего анализа. За счет выбора необходимых полей и строк, общий размер таблицы уменьшился в десять раз по сравнению с первоначальной.

clntr infocodeidoper date
2894612234q1000049803.06.2020
1894612235q1000049804.06.2020
9894612236q1000049805.06.2020
14894612239br1000049806.06.2020
15894612241cr1000049807.06.2020
Советуем почитать