Чтение и запись файлов JSON в Python с помощью Pandas

Библиотека Pandas предлагает классы и функционал для чтения, обработки и визуализации данных, хранящихся в разных форматах. В данной статье мы научимся считывать и записывать данные JSON, используя Python и Pandas.

Создание файла JSON

Сначала мы создадим файл с использованием ядра Python, а далее считаем и запишем в него данные при помощи Pandas.

Создание данных JSON через вложенные словари

В Python для создания данных JSON можно использовать вложенные словари. Каждый элемент во внешнем словаре соответствует столбцу в файле JSON.

Ключ каждого элемента – заголовок столбца, а значение – другой словарь, состоящий из строк столбца. Реализуем словарь, который можно использовать для создания файла JSON со списком вымышленных пациентов:

patients = { "Name":{"0":"John","1":"Nick","2":"Ali","3":"Joseph"}, "Gender":{"0":"Male","1":"Male","2":"Female","3":"Male"}, "Nationality":{"0":"UK","1":"French","2":"USA","3":"Brazil"},     "Age":{"0":10,"1":25,"2":35,"3":29}}

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

Чтение и запись файлов JSON в Python при помощи Pandas

В столбце Name первая запись сохраняется в нулевом индексе, где значением записи будет John, и так далее.

Создание данных JSON через списки словарей

Ещё один метод создания данных в формате JSON – использование списка словарей. Каждый элемент в списке состоит из словаря, а каждый словарь представляет строку. Этот подход удобнее для чтения, по сравнению с использованием вложенных словарей.

Создадим список для файла JSON, в котором хранится информация о различных автомобилях:

cars = [    {"Name":"Honda", "Price": 10000, "Model":2005, "Power": 1300},    {"Name":"Toyota", "Price": 12000, "Model":2010, "Power": 1600},    {"Name":"Audi", "Price": 25000, "Model":2017, "Power": 1800},    {"Name":"Ford", "Price": 28000, "Model":2009, "Power": 1200},         ]

Каждому элементу словаря соответствует строка в файле JSON. К примеру, первый элемент в первом словаре хранит в столбце Name значение Honda. Значение в первой строке столбца Price будет 10000 и так далее.

Запись данных в файл JSON через Python

При помощи вложенных словарей и списков словарей можно без труда сохранить данные в файле JSON. Для этого мы будем использовать модуль json и способ dump():

import jsonwith open('E:/datasets/patients.json', 'w') as f:    json.dump(patients, f)    with open('E:/datasets/cars.json', 'w') as f:    json.dump(cars, f)  

Сейчас у нас есть два файла JSON — patients.json и cars.json.

Чтение файлов JSON при помощи Pandas

Чтобы прочитать файл JSON при помощи Pandas, вызовем способ read_json() и передадим ему путь к файлу, который необходимо прочитать. Способ возвращает DataFrame, который хранит данные в виде столбцов и строк.

Но сначала необходимо установить библиотеку Pandas:

$ pip install pandas

Чтение JSON из локальных файлов

Приведенный ниже скрипт считывает файл patients.json из локальной системной директории и сохраняет результат во фрейме данных patients_df. Далее заголовок фрейма отображается при помощи способа head():

import pandas as pdpatients_df = pd.read_json('E:/datasets/patients.json')patients_df.head()

Запуск этого кода должен дать следующий результат:

Чтение и запись файлов JSON в Python при помощи Pandas

Следующий скрипт считает файл cars.json из локальной системы и далее вызовет способ head()cars_df для вывода заголовка:

cars_df = pd.read_json('E:/datasets/cars.json')cars_df.head()

Результат запуска этого кода:

Чтение и запись файлов JSON в Python при помощи Pandas

Чтение JSON из удаленных файлов

При помощи способа read_json() также можно без проблем считывать файлы JSON, расположенные на удаленных серверах. Для этого необходимо передать в вызов возможности путь удаленного файла JSON.

Давайте прочитаем и выведем заголовок из Iris Dataset:

import pandas as pdiris_data = pd.read_json("https://raw.githubusercontent.com/domoritz/maps/master/data/iris.json")iris_data.head()

Результат запуска этого кода:

Чтение и запись файлов JSON в Python при помощи Pandas

Запись файлов данных JSON при помощи Pandas

Чтобы преобразовать фрейм данных Pandas в файл JSON, используем возможность to_json() и передадим ей в виде параметры путь к файлу, который будет создан.

Создадим файл JSON из набора данных tips, который включен в библиотеку Seaborn. Но сначала установим ее:

$ pip install seaborn

Далее импортируем ее и загрузим подсказки в набор данных:

import seaborn as snsdataset = sns.load_dataset('tips')dataset.head()

Ниже показано как выглядит набор данных:

Чтение и запись файлов JSON в Python при помощи Pandas

Функцию Seaborn load_dataset() возвращает DataFrame, так что загрузка набора данных может вызвать возможность to_json() для ее преобразования.

После получения доступа к набору данных, сохраним его содержимое в файле JSON. Мы создали для этого каталог datasets:

dataset.to_json('E:/datasets/tips.json')

Перейдя в каталог E:/datasets, вы должны увидеть там файл tips.json, JSON-данные которого соответствует записям во фрейме данных Pandas tips:

{   "total_bill":{       "0":16.99,       "1":10.34,       "2":21.01,       "3":23.68,       "4":24.59,       "5":25.29,...   }   "tip":{       "0":1.01,       "1":1.66,       "2":3.5,       "3":3.31,       "4":3.61,       "5":4.71,...   }   "sex":{        "0":"Female",        "1":"Male",        "2":"Male",        "3":"Male",        "4":"Female",        "5":"Male",...   }    "smoker":{        "0":"No",        "1":"No",        "2":"No",        "3":"No",        "4":"No",        "5":"No", ...    }    ...

Заключение

В данной статье мы рассмотрели, как считывать и записывать файлы JSON, используя популярную библиотеку Pandas Python.

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

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