Рубрики
Без рубрики

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

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

Автор оригинала: Usman Malik.

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

Вступление

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

В этой статье мы будем читать и писать JSON-файлы с помощью Python и Pandas.

Что такое JSON-файл?

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

Хотя он был получен из JavaScript, он не зависит от платформы и является широко распространенным и используемым форматом- наиболее распространенным в REST API.

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

Чтобы создать JSON – файлы с помощью Python, данные должны храниться определенным образом. Существует несколько способов хранения этих данных с помощью Python. Некоторые из методов были рассмотрены в этой статье .

Сначала мы создадим файл с помощью core 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 . Значение элемента состоит из словаря, в котором элементы словаря представляют собой строки. Ключи элементов внутреннего словаря соответствуют индексным номерам строк, где значения представляют значения строк.

Поскольку это может быть немного трудно визуализировать просто так, вот визуальное представление:

визуализированные пациенты

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

Создание данных 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. Например, первый элемент в первом словаре хранит значение Honda в столбце Name . Аналогично, значение столбца Price в первой строке будет равно 10000 и так далее.

Запись данных в JSON-файл с помощью Python

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

import json
with 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 . Следующий шаг-прочитать эти файлы через библиотеку Pandas.

Если вы хотите узнать больше о чтении и записи JSON в файл в Core Python , мы вас накроем!

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

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

Хотя, во-первых, нам придется установить панд:

$ pip install pandas

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

Следующий сценарий читает patients.json файл из локального системного каталога и сохраняет результат в patients_df dataframe. Затем заголовок фрейма данных печатается с помощью метода head() :

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

Запуск этого кода должен привести к:

фрейм данных пациентов

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

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

Запуск этого кода должен привести к:

фрейм данных автомобилей

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

Метод read_json() не ограничивается только чтением локальных файлов. Вы также можете читать файлы JSON, расположенные на удаленных серверах. Вам просто нужно передать путь удаленного JSON-файла вызову функции.

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

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

Запуск этого кода должен дать нам:

кадр данных о растении ириса

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

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

Давайте создадим JSON-файл из набора данных tips , который входит в библиотеку Seaborn для визуализации данных.

Во-первых, давайте установим Seaborn:

$ pip install seaborn

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

import seaborn as sns

dataset = sns.load_dataset('tips')
dataset.head()

Вот как выглядит набор данных:

советы заголовок набора данных

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

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

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

Переход к E:/datasets каталог, вы должны увидеть tips.jason . Открыв файл, мы можем увидеть 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-это широко используемый формат для хранения данных и обмена ими между клиентом и сервером. Разработчики часто используют этот формат по сравнению с такими форматами, как XML, из-за того, насколько он легкий и читаемый.

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