Конвертация Pandas DataFrame в JSON
В этом руководстве вы научитесь преобразовывать объект DataFrame Pandas в объект JSON и файл с использованием Python. Большинство языков программирования умеют читать, анализировать и работать с JSON. Из-за этого умение преобразовывать объект DataFrame Pandas в JSON является важным навыком.
Pandas обеспечивает большую гибкость при преобразовании DataFrame в файл JSON. Это руководство погружает в функциональные возможности с практическими примерами. К концу этого учебного пособия вы узнаете:
Как преобразовать DataFrame Pandas в строку или файл JSON
Как настроить форматы для отсутствующих данных и чисел с плавающей запятой
Как настроить структуру полученного файла JSON
Как сжать файл JSON при преобразовании DataFrame Pandas
Оглавление
Понимание метода Pandas to_json
Чтобы преобразовать DataFrame Pandas в строку JSON или файл, вы можете использовать метод .to_json()
. Давайте начнем с изучения метода и какие параметры в нем доступны. Метод предоставляет большую гибкость в том, как структурировать файл JSON.
Как видно из приведенного выше блока кода, метод имеет большое количество параметров. Фактически, метод предоставляет значения по умолчанию для всех параметров, что означает, что вы можете вызвать метод без необходимости дополнительных инструкций.
Таблица разбивает аргументы и их аргументы по умолчанию для метода .to_json()
:
path_or_buf=
Объект строки или пути для записи JSON. Если None
, результат возвращается в виде строки.
None
string, path object, or None
orient=
Как отформатировать строку JSON.
None
string
date_format=
Тип преобразования даты.
None
None, epoch, iso
double_precision=
Количество десятичных знаков, используемых при кодировании значений с плавающей запятой..
10
int
force_ascii=
Необходимо ли принудительно закодировать строки в ASCII.
True
Bool
date_unit=
Единица времени для кодирования.
'ms'
string
default_handler=
Обработчик для вызова, если иначе объект нельзя преобразовать в подходящий формат для JSON.
None
callable
lines=
Следует ли записывать JSON с разделителями строк.
False
Bool
compression=
Для оперативного сжатия выходных данных.
'infer'
string or dict
index=
Включать ли значения индекса в строку JSON.
True
Bool
indent=
Длина пробела, используемого для отступа каждой записи.
None
Integer
storage_options=
Дополнительные возможности для различных вариантов хранения, таких как хранилище S3.
None
dict
Теперь, когда у вас есть твердое понимание метода, давайте загрузим образец Pandas DataFrame, чтобы продолжить работать вместе.
Загрузка образца DataFrame Pandas
Давайте начнем с загрузки примера DataFrame Pandas, который вы можете использовать, чтобы следовать вместе с нами. Данные будут сознательно простыми, чтобы упростить следование инструкциям. Просто скопируйте и вставьте приведенный ниже код в выбранный вами редактор кода:
У нас есть DataFrame, который содержит 3 столбца с 3 записями. Один из столбцов содержит строки, другой содержит целые числа и пропущенные значения, а третий содержит значения с плавающей точкой. Теперь, когда у нас есть загруженный DataFrame, давайте начнем с конвертации DataFrame в строку JSON.
Преобразование DataFrame Pandas в строку JSON
Метод .to_json()
в Pandas содержит аргументы по умолчанию для всех параметров. Это означает, что мы можем вызвать метод, не передавая никаких спецификаций. По умолчанию Pandas будет использовать аргумент path_or_buf=None
, что указывает на то, что DataFrame должен быть преобразован в строку JSON.
Давайте посмотрим, как мы можем преобразовать наш DataFrame Pandas в строку JSON:
Мы видим, что передача метода .to_dict()
с аргументами по умолчанию к объекту Pandas DataFrame возвращает строковое представление файла JSON.
Вы, конечно, можете сериализовать эту строку в словарь Python. Однако, если вы хотите преобразовать DataFrame Pandas в словарь, вы также можете просто использовать Pandas для преобразования DataFrame в словарь
Преобразование DataFrame Pandas в файл JSON
Чтобы преобразовать DataFrame Pandas в файл JSON, вы можете передать объект пути или объект, подобный файлу, методу Pandas .to_json()
. Передавая строку, представляющую путь к файлу JSON, в вызов нашего метода, создается файл, содержащий наш DataFrame.
Давайте посмотрим, как это выглядит:
В следующем разделе вы узнаете, как настроить структуру нашего JSON файла.
Настройка структуры JSON таблицы данных Pandas
Метод .to_json()
в библиотеке Pandas предоставляет огромную гибкость в структурировании результирующего JSON файла. По умолчанию файл JSON будет структурирован как 'columns'
. Метод предоставляет следующие опции: 'split', 'records', 'index', 'columns', 'values', 'table'
. Давайте исследуем эти опции, чтобы разобраться в различных возможностях.
Pandas DataFrame в JSON: разделенная структура
By passing 'split'
into the Pandas .to_json()
method’s orient argument, you return JSON string that formats the data in the format of a dictionary that breaks out the index, columns, and data separately. This is demonstrated below and can be helpful when moving data into a database format:
Pandas DataFrame to JSON: Records Structure
При передаче значения 'records'
в аргумент orient метода .to_json()
библиотеки Pandas, вы получите строку в формате JSON, которая структурирует данные в виде списка словарей, где ключи - это названия столбцов, а значения - записи для каждой отдельной записи.
Pandas DataFrame в JSON: структура индекса
При передаче 'index'
в аргумент orient метода .to_json()
библиотеки Pandas, вы получаете строку в формате JSON, которая организует данные в виде словаря, содержащего индексы в качестве ключей и словари сопоставлений столбцов с записями.
Pandas DataFrame в JSON: структура столбцов
Используя аргумент orient метода .to_json()
в Pandas со значением 'columns'
, вы получаете строку в формате JSON, которая представляет данные в виде словаря. В этом словаре колонки выступают в роли ключей, а значениями являются словари сопоставления индекса с записью.
Pandas DataFrame в JSON: структура значений
При передаче 'values'
в аргумент orient метода .to_json()
библиотеки Pandas, вы получаете строку в формате JSON, которая форматирует данные только с их значениями.
Pandas DataFrame в JSON: структура таблицы
При передаче 'table'
в аргумент orient метода .to_json()
библиотеки Pandas, возвращается строка JSON, которая форматирует данные в виде схематической таблицы.
Изменение значений с плавающей запятой при преобразовании фреймов данных Pandas в JSON
По умолчанию Pandas сокращает точность чисел с плавающей запятой до 10 десятичных знаков. Мы можем настроить это поведение, изменив параметр double_precision=
метода to_json()
Одно из значений в нашем DataFrame содержит значение с плавающей точкой с точностью до пяти знаков. Давайте изменим поведение так, чтобы оно включало только один знак после запятой.
В следующем разделе вы узнаете, как преобразовать DataFrame в JSON и включить индекс.
Преобразование фреймов данных Pandas в JSON и включение индекса
По умолчанию Pandas будет включать индекс при преобразовании DataFrame в объект JSON. Мы можем изменить это поведение, используя параметр index=
. Этот параметр можно изменить только при ориентировании вашего DataFrame как 'split'
или 'table'
.
Давайте посмотрим, как это выглядит, когда мы удаляем индекс при конвертации в JSON: удалить индекс
В следующем разделе вы узнаете, как указать сжатие для вашего результирующего JSON файла.
Как сжимать файлы при преобразовании фреймов данных Pandas в JSON
Метод .to_json()
в Pandas предлагает значительную настраиваемость в способах сжатия вашего JSON файла. По умолчанию, Pandas попытается определить, какое сжатие использовать, основываясь на расширении файла, которое было предоставлено.
Pandas в настоящее время поддерживает сжатие файлов с использованием форматов zip, gzip, bz2, zstd и tar. Давайте посмотрим, как мы можем сжать наш DataFrame в формат zip сжатия:
В следующем разделе вы научитесь изменять отступ в вашем JSON-файле. Когда вы захотите прочитать ваш JSON-файл как DataFrame, вам нужно будет указать, какой тип сжатия использовался.
Как изменить отступ файла JSON при преобразовании фрейма данных Pandas
Pandas также позволяет указать отступ при печати вашего результирующего JSON-файла. Это похоже на красивую печать JSON в Python, используя параметр indent=
, вы можете указать целое число, представляющее количество отступов, которое вы хотите предоставить.
Давайте посмотрим, как это будет выглядеть, если передать значение 4:
Часто задаваемые вопросы
Заключение
В этом учебном пособии вы научились конвертировать DataFrame Pandas в строку или файл JSON. Сначала вы узнали о методе .to_dict()
Pandas, его различных параметрах и аргументах по умолчанию. Затем вы научились конвертировать DataFrame в строку и файл JSON. После этого вы узнали, как настроить вывод, указав ориентацию файла JSON. Вы также научились настраивать значения с плавающей точкой, индекс и отступ объекта.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:
Преобразование фрейма данных Pandas в словарь
Преобразование фрейма данных Pandas в список
Преобразование списка словарей в фрейм данных Pandas
Преобразование DataFrame Pandas в массив NumPy
Преобразование фрейма данных Pandas в файл Pickle
Pandas: создайте фрейм данных из списков (5 способов!)
Last updated