pandas.read_json#
-
pandas.read_json(path_or_buf, *, orient=None, typ='frame', dtype=None, convert_axes=None, convert_dates=True, keep_default_dates=True, precise_float=False, date_unit=None, encoding=None, encoding_errors='strict', lines=False, chunksize=None, compression='infer', nrows=None, storage_options=None, dtype_backend=
, engine='ujson')[источник]# Преобразовать строку JSON в объект pandas.
- Параметры:
- path_or_bufвалидная JSON строка, объект пути или файлоподобный объект
Допустим любой корректный строковый путь. Строка может быть URL. Допустимые схемы URL включают http, ftp, s3 и file. Для file URL ожидается хост. Локальный файл может быть:
file://localhost/path/to/table.json.Если вы хотите передать объект пути, pandas принимает любой
os.PathLike.Под файлоподобным объектом мы подразумеваем объекты с
read()метод, такой как файловый дескриптор (например, через встроенную функциюopenфункция) илиStringIO.Устарело с версии 2.1.0: Передача строковых литералов JSON устарела.
- orientstr, optional
Указание ожидаемого формата JSON строки. Совместимые JSON строки могут быть созданы с помощью
to_json()с соответствующим значением orient. Набор возможных значений orient:'split': подобно словарю{index -> [index], columns -> [columns], data -> [values]}'records': список подобных[{column -> value}, ... , {column -> value}]'index': подобно словарю{index -> {column -> value}}'columns': подобно словарю{column -> {index -> value}}'values': только массив значений'table': подобно словарю{'schema': {schema}, 'data': {data}}
Допустимые и значения по умолчанию зависят от значения typ параметр.
когда
typ == 'series',допустимые ориентации:
{'split','records','index'}по умолчанию
'index'Индекс Series должен быть уникальным для orient
'index'.
когда
typ == 'frame',допустимые ориентации:
{'split','records','index', 'columns','values', 'table'}по умолчанию
'columns'Индекс DataFrame должен быть уникальным для ориентаций
'index'и'columns'.Столбцы DataFrame должны быть уникальными для ориентаций
'index','columns', и'records'.
- typ{‘frame’, ‘series’}, по умолчанию ‘frame’
Тип объекта для восстановления.
- dtypebool или dict, по умолчанию None
Если True, выводить типы данных; если словарь столбец-тип данных, то использовать их; если False, то не выводить типы данных вообще, применяется только к данным.
Для всех
orientзначения, кроме'table', по умолчанию True.- convert_axesbool, по умолчанию None
Попытаться преобразовать оси к правильным типам данных.
Для всех
orientзначения, кроме'table', по умолчанию True.- convert_datesbool или список строк, по умолчанию True
Если True, то стандартные столбцы с датами могут быть преобразованы (в зависимости от keep_default_dates). Если False, даты не будут преобразованы. Если указан список имен столбцов, то эти столбцы будут преобразованы, а стандартные столбцы с датами также могут быть преобразованы (в зависимости от keep_default_dates).
- keep_default_datesbool, по умолчанию True
Если выполняется разбор дат (convert_dates не False), то попытаться разобрать столбцы по умолчанию, похожие на даты. Метка столбца считается похожей на дату, если
он заканчивается на
'_at',он заканчивается на
'_time',начинается с
'timestamp',это
'modified', илиэто
'date'.
- precise_floatbool, по умолчанию False
Установите для использования функции более высокой точности (strtod) при декодировании строки в значения double. По умолчанию (False) используется быстрая, но менее точная встроенная функциональность.
- date_unitstr, по умолчанию None
Единица времени для определения при преобразовании дат. Поведение по умолчанию — попытка определить правильную точность, но если это нежелательно, то передайте одно из значений 's', 'ms', 'us' или 'ns', чтобы принудительно выполнить разбор только секунд, миллисекунд, микросекунд или наносекунд соответственно.
- кодировкаstr, по умолчанию 'utf-8'
Кодировка, используемая для декодирования байтов py3.
- encoding_errorsstr, опционально, по умолчанию "strict"
Как обрабатываются ошибки кодировки. Список возможных значений .
Добавлено в версии 1.3.0.
- строкиbool, по умолчанию False
Читать файл как объект json построчно.
- chunksizeint, необязательный
Возвращает объект JsonReader для итерации. Смотрите json документы с разделением по строкам для получения дополнительной информации о
chunksize. Это можно передать только если lines=True. Если это None, файл будет прочитан в память целиком.- compressionстрока или словарь, по умолчанию ‘infer’
Для динамической декомпрессии данных на диске. Если 'infer' и 'path_or_buf' является путем, то определить сжатие по следующим расширениям: '.gz', '.bz2', '.zip', '.xz', '.zst', '.tar', '.tar.gz', '.tar.xz' или '.tar.bz2' (в противном случае без сжатия). Если используется 'zip' или 'tar', ZIP-файл должен содержать только один файл данных для чтения. Установить в
Noneдля отсутствия распаковки. Также может быть словарём с ключом'method'установить в одно из {'zip','gzip','bz2','zstd','xz','tar'} и другие пары ключ-значение передаются вzipfile.ZipFile,gzip.GzipFile,bz2.BZ2File,zstandard.ZstdDecompressor,lzma.LZMAFileилиtarfile.TarFile, соответственно. В качестве примера, следующее может быть передано для декомпрессии Zstandard с использованием пользовательского словаря сжатия:compression={'method': 'zstd', 'dict_data': my_compression_dict}.Добавлено в версии 1.5.0: Добавлена поддержка для .tar файлы.
Изменено в версии 1.4.0: Поддержка Zstandard.
- nrowsint, необязательный
Количество строк из файла JSON с разделителями строк, которые необходимо прочитать. Это можно передать только если lines=True. Если это None, будут возвращены все строки.
- storage_optionsdict, optional
Дополнительные параметры, которые имеют смысл для конкретного соединения с хранилищем, например, хост, порт, имя пользователя, пароль и т.д. Для HTTP(S) URL пары ключ-значение передаются в
urllib.request.Requestв качестве параметров заголовка. Для других URL-адресов (например, начинающихся с "s3://" и "gcs://") пары ключ-значение передаютсяfsspec.open. Пожалуйста, смотритеfsspecиurllibдля получения дополнительной информации, а для дополнительных примеров по опциям хранения см. здесь.- dtype_backend{'numpy_nullable', 'pyarrow'}, по умолчанию 'numpy_nullable'
Тип данных бэкенда, примененный к результирующему
DataFrame(все еще экспериментальная). Поведение следующее:"numpy_nullable": возвращает поддерживаемый нуллифицируемым типом данныхDataFrame(по умолчанию)."pyarrow": возвращает nullable на основе pyarrowArrowDtypeDataFrame.
Добавлено в версии 2.0.
- движок{“ujson”, “pyarrow”}, по умолчанию “ujson”
Движок парсера для использования.
"pyarrow"движок доступен только когдаlines=True.Добавлено в версии 2.0.
- Возвращает:
- Series, DataFrame или pandas.api.typing.JsonReader
JsonReader возвращается, когда
chunksizeне является0илиNone. В противном случае тип возвращаемого значения зависит от значенияtyp.
Смотрите также
DataFrame.to_jsonПреобразовать DataFrame в строку JSON.
Series.to_jsonПреобразовать Series в строку JSON.
json_normalizeНормализация полуструктурированных JSON-данных в плоскую таблицу.
Примечания
Специфично для
orient='table', еслиDataFrameс литераломIndexимя index записывается сto_json(), последующая операция чтения неправильно установитIndexимя дляNone. Это связано с тем, что index также используетсяDataFrame.to_json()для обозначения отсутствующегоIndexимя, и последующийread_json()операция не может различить эти два. Такое же ограничение встречается сMultiIndexи любые имена, начинающиеся с'level_'.Примеры
>>> from io import StringIO >>> df = pd.DataFrame([['a', 'b'], ['c', 'd']], ... index=['row 1', 'row 2'], ... columns=['col 1', 'col 2'])
Кодирование/декодирование Dataframe с использованием
'split'форматированный JSON:>>> df.to_json(orient='split') '{"columns":["col 1","col 2"],"index":["row 1","row 2"],"data":[["a","b"],["c","d"]]}' >>> pd.read_json(StringIO(_), orient='split') col 1 col 2 row 1 a b row 2 c d
Кодирование/декодирование Dataframe с использованием
'index'форматированный JSON:>>> df.to_json(orient='index') '{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d"}}'
>>> pd.read_json(StringIO(_), orient='index') col 1 col 2 row 1 a b row 2 c d
Кодирование/декодирование Dataframe с использованием
'records'форматированный JSON. Обратите внимание, что метки индекса не сохраняются при таком кодировании.>>> df.to_json(orient='records') '[{"col 1":"a","col 2":"b"},{"col 1":"c","col 2":"d"}]' >>> pd.read_json(StringIO(_), orient='records') col 1 col 2 0 a b 1 c d
Кодирование с Table Schema
>>> df.to_json(orient='table') '{"schema":{"fields":[{"name":"index","type":"string"},{"name":"col 1","type":"string"},{"name":"col 2","type":"string"}],"primaryKey":["index"],"pandas_version":"1.4.0"},"data":[{"index":"row 1","col 1":"a","col 2":"b"},{"index":"row 2","col 1":"c","col 2":"d"}]}'
Следующий пример использует
dtype_backend="numpy_nullable">>> data = '''{"index": {"0": 0, "1": 1}, ... "a": {"0": 1, "1": null}, ... "b": {"0": 2.5, "1": 4.5}, ... "c": {"0": true, "1": false}, ... "d": {"0": "a", "1": "b"}, ... "e": {"0": 1577.2, "1": 1577.1}}''' >>> pd.read_json(StringIO(data), dtype_backend="numpy_nullable") index a b c d e 0 0 1 2.5 True a 1577.2 1 1
4.5 False b 1577.1