Вступление
Pandas - одна из наиболее часто используемых библиотек Python для обработки и визуализации данных. Библиотека Pandas предоставляет классы и функции, которые можно использовать для эффективного чтения, управления и визуализации данных, хранящихся в различных форматах файлов.
В этой статье мы будем читать и писать файлы JSON с помощью Python и Pandas.
Что такое файл JSON?
Нотация объектов JavaScript (JSON) - это формат данных, в котором данные хранятся в удобочитаемой форме. Хотя технически его можно использовать для хранения, файлы JSON в основном используются для сериализации и обмена информацией между клиентом и сервером.
Хотя он был получен из JavaScript, он не зависит от платформы и является широко распространенным и используемым форматом - чаще всего в REST API.
Создание файла JSON
Чтобы создавать файлы JSON с помощью Python, данные должны храниться определенным образом. Есть несколько способов сохранить эти данные с помощью Python. Некоторые методы обсуждались в этой статье .
Сначала мы создадим файл, используя ядро 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
Значение элемента состоит из словаря, в котором элементы словаря
представляют собой строки. Ключи элементов внутреннего словаря
соответствуют порядковым номерам строк, где значения представляют
значения строк.
Поскольку это может быть немного сложно визуализировать просто так, вот визуальное представление:
{.ezlazyload}
В 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
котором данные хранятся в виде столбцов и строк.
Хотя сначала нам нужно установить Pandas:
$ 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()
Запуск этого кода должен дать:
{.ezlazyload}
Точно так же следующий скрипт считывает cars.json
из локальной
системы, а затем вызывает метод head()
в cars_df
для печати
заголовка:
cars_df = pd.read_json('E:/datasets/cars.json')
cars_df.head()
Запуск этого кода должен дать:
{.ezlazyload}
Чтение 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()
Выполнение этого кода должно дать нам:
{.ezlazyload}
Запись файлов данных JSON через Pandas
Чтобы преобразовать фрейм данных Pandas в файл JSON, мы используем
to_json()
в фрейме данных и передаем путь к файлу, который скоро будет
создан в качестве параметра.
Давайте создадим файл JSON из tips
, который включен в библиотеку
Seaborn для визуализации данных.
Во-первых, давайте установим Seaborn:
$ pip install seaborn
Затем давайте импортируем его и загрузим подсказки в набор данных:
import seaborn as sns
dataset = sns.load_dataset('tips')
dataset.head()
Вот как выглядит набор данных:
{.ezlazyload}
load_dataset()
возвращает DataFrame
данных Pandas, поэтому загрузка
такого набора данных позволяет нам просто вызвать to_json()
для его
преобразования.
Как только мы получим набор данных, давайте сохраним его содержимое в
файле JSON. Мы создали для этого каталог datasets
dataset.to_json('E:/datasets/tips.json')
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 - это широко используемый формат для хранения данных и обмена ими между клиентом и сервером. Разработчики часто используют этот формат вместо таких форматов, как XML, из-за его легкости и удобочитаемости.
В этой статье мы рассмотрели, как читать и записывать файлы JSON с помощью популярной библиотеки Python Pandas - от локальных до удаленных файлов.