pandas.json_normalize
- pandas.json_normalize(data, record_path=None, meta=None, meta_prefix=None, record_prefix=None, errors='raise', sep='.', max_level=None)[source]
-
Нормализация полуструктурированных данных JSON в плоскую таблицу.
- Параметры
-
- data:dict или список словарей
-
Нераспакованные JSON-объекты.
- record_path:строка или список строк, по умолчанию None
-
Путь в каждом объекте к списку записей. Если не указан, данные будут считаться массивом записей.
- meta:список путей (строки или списки строк), по умолчанию None
-
Поля, используемые в качестве метаданных для каждой записи в результирующей таблице.
- meta_prefix:строка, по умолчанию None
-
Если True, префикс записей с точечным (?) путём, например, foo.bar.field, если meta – [‘foo’, ‘bar’].
- record_prefix:строка, по умолчанию None
-
Если True, префикс записей с точечным (?) путём, например, foo.bar.field, если путь к записям – [‘foo’, ‘bar’].
- errors:{‘raise’, ‘ignore’}, по умолчанию ‘raise’
-
Настройка обработки ошибок.
‘ignore’ : пропустит KeyError, если ключи, перечисленные в meta, не всегда присутствуют.
‘raise’ : вызовет KeyError, если ключи, перечисленные в meta, не всегда присутствуют.
- sep:строка, по умолчанию ‘.’
-
Вложенные записи будут генерировать имена, разделенные sep. Например, для sep=’.’, {‘foo’: {‘bar’: 0}} -> foo.bar.
- max_level:целое число, по умолчанию None
-
Максимальное количество уровней (глубина словаря) для нормализации. Если None, нормализуются все уровни.
В версии 0.25.0.
- Возвращает
-
- frame:DataFrame
- Нормализует полуструктурированные данные JSON в плоскую таблицу.
Примеры
>>> data = [ ... {"id": 1, "name": {"first": "Coleen", "last": "Volk"}}, ... {"name": {"given": "Mark", "family": "Regner"}}, ... {"id": 2, "name": "Faye Raker"}, ... ] >>> pd.json_normalize(data) id name.first name.last name.given name.family name 0 1.0 Coleen Volk NaN NaN NaN 1 NaN NaN NaN Mark Regner NaN 2 2.0 NaN NaN NaN NaN Faye Raker>>> data = [ ... { ... "id": 1, ... "name": "Cole Volk", ... "fitness": {"height": 130, "weight": 60}, ... }, ... {"name": "Mark Reg", "fitness": {"height": 130, "weight": 60}}, ... { ... "id": 2, ... "name": "Faye Raker", ... "fitness": {"height": 130, "weight": 60}, ... }, ... ] >>> pd.json_normalize(data, max_level=0) id name fitness 0 1.0 Cole Volk {'height': 130, 'weight': 60} 1 NaN Mark Reg {'height': 130, 'weight': 60} 2 2.0 Faye Raker {'height': 130, 'weight': 60}Нормализует вложенные данные до уровня 1.
>>> data = [ ... { ... "id": 1, ... "name": "Cole Volk", ... "fitness": {"height": 130, "weight": 60}, ... }, ... {"name": "Mark Reg", "fitness": {"height": 130, "weight": 60}}, ... { ... "id": 2, ... "name": "Faye Raker", ... "fitness": {"height": 130, "weight": 60}, ... }, ... ] >>> pd.json_normalize(data, max_level=1) id name fitness.height fitness.weight 0 1.0 Cole Volk 130 60 1 NaN Mark Reg 130 60 2 2.0 Faye Raker 130 60>>> data = [ ... { ... "state": "Florida", ... "shortname": "FL", ... "info": {"governor": "Rick Scott"}, ... "counties": [ ... {"name": "Dade", "population": 12345}, ... {"name": "Broward", "population": 40000}, ... {"name": "Palm Beach", "population": 60000}, ... ], ... }, ... { ... "state": "Ohio", ... "shortname": "OH", ... "info": {"governor": "John Kasich"}, ... "counties": [ ... {"name": "Summit", "population": 1234}, ... {"name": "Cuyahoga", "population": 1337}, ... ], ... }, ... ] >>> result = pd.json_normalize( ... data, "counties", ["state", "shortname", ["info", "governor"]] ... ) >>> result name population state shortname info.governor 0 Dade 12345 Florida FL Rick Scott 1 Broward 40000 Florida FL Rick Scott 2 Palm Beach 60000 Florida FL Rick Scott 3 Summit 1234 Ohio OH John Kasich 4 Cuyahoga 1337 Ohio OH John Kasich>>> data = {"A": [1, 2]} >>> pd.json_normalize(data, "A", record_prefix="Prefix.") Prefix.0 0 1 1 2Возвращает нормализованные данные со столбцами, префикс которых задан данной строкой.
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.json_normalize.html