Data Wrangling

Мастерство преобразования JSON в DataFrame Pandas

Spread the love

Pandas — мощная библиотека Python для обработки и анализа данных. Часто данные поступают в формате JSON, требуя преобразования в Pandas DataFrame для эффективной обработки. В этой статье рассматриваются два основных метода такого преобразования: использование json_normalize() и read_json(), а также выделяются их сильные и слабые стороны.

Оглавление

Эффективная обработка вложенного JSON с помощью json_normalize()

Функция json_normalize() отлично подходит для работы со вложенными структурами JSON. Она преобразует эти иерархические данные в табличный формат, идеально подходящий для Pandas DataFrame. Хотя она требует более глубокого понимания структуры вашего JSON, она предлагает тонкий контроль над результирующим DataFrame.

Рассмотрим этот пример:


import pandas as pd
import json

json_data = """
[
  {"id": 1, "name": "Alice", "address": {"street": "123 Main St", "city": "Anytown"}},
  {"id": 2, "name": "Bob", "address": {"street": "456 Oak Ave", "city": "Otherville"}}
]
"""

data = json.loads(json_data)

df = pd.json_normalize(data, record_path=['address'], meta=['id', 'name'])

print(df)

Этот код загружает JSON, а затем использует json_normalize(). record_path=['address'] указывает на вложенное поле ‘address’ для разворачивания, а meta=['id', 'name'] включает ‘id’ и ‘name’ в качестве столбцов метаданных. Результирующий DataFrame будет содержать столбцы ‘street’, ‘city’, ‘id’ и ‘name’.

Преимущества json_normalize():

  • Обработка вложенного JSON: Идеально подходит для сложных, иерархических JSON.
  • Контролируемое разворачивание: Точный контроль над включенными полями и разворачиванием.

Недостатки json_normalize():

  • Необходимо знание структуры JSON: Эффективное использование требует понимания структуры вашего JSON.
  • Сложность с глубоко вложенным JSON: Чрезвычайно сложные структуры могут оказаться громоздкими.

Упрощение простого JSON с помощью read_json()

Функция read_json() предлагает более прямой подход, особенно для простых структур JSON. Она напрямую считывает данные JSON в Pandas DataFrame, что часто предпочтительнее для простых JSON-объектов или при работе с JSON-файлами.

Вот пример:


import pandas as pd
import json

json_data = """
[
  {"id": 1, "name": "Alice", "age": 30},
  {"id": 2, "name": "Bob", "age": 25}
]
"""

df = pd.read_json(json_data)

print(df)

Этот код напрямую считывает JSON-строку в DataFrame, отражая структуру JSON в столбцах DataFrame.

Преимущества read_json():

  • Простота и интуитивность: Простота использования для простых структур JSON.
  • Прямая обработка JSON-файлов: Эффективно считывает данные JSON из файлов, используя пути к файлам.

Недостатки read_json():

  • Ограниченная обработка вложенного JSON: Может испытывать трудности с глубоко вложенным JSON, потенциально требуя предварительной обработки.
  • Меньше контроля над разворачиванием: Предлагает меньший контроль над окончательной структурой DataFrame по сравнению с json_normalize().

Заключение:

И json_normalize(), и read_json() ценны для преобразования JSON в Pandas DataFrame. Лучший выбор зависит от сложности вашего JSON и желаемого контроля над результирующим DataFrame. Для простого JSON достаточно read_json(); для вложенного JSON json_normalize() обеспечивает гибкость для создания пригодного для использования DataFrame. Не забудьте установить pandas, используя pip install pandas, прежде чем запускать эти примеры.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *