Чтение и запись 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- от локальных до удаленных файлов.