Конвертация списка словарей в Pandas DataFrame

В этом учебнике вы научитесь преобразовывать список словарей Python в DataFrame Pandas. Pandas предлагает несколько способов преобразования словарей в DataFrame. Вы узнаете, как использовать метод from_dict Pandas, конструктор DataFrame и функцию

К концу этого урока вы узнаете:

  • Как преобразовать список словарей в DataFrame Pandas

  • Как работать с разными наборами столбцов в словарях

  • Как установить индекс при преобразовании списка словарей в DataFrame

  • Как преобразовать вложенные словари в DataFrame Pandas

Оглавление

Краткое изложение методов

В таблице ниже приводятся различные способы чтения списка словарей в DataFrame Pandas. Каждый из этих методов рассмотрен детально в течение учебного пособия:

Имя метода
Работает с отсутствующими ключами
Читать только некоторые столбцы
Установить индекс
Чтение вложенных словарей

DataFrame()

Да

Да

Да

Нет

from_dict()

Да

Да

Только используя.set_index()

Нет

from_records()

Да

Да

Да

Нет

json_normalize()

Да

Да

Да

Да

В этом разделе вы узнаете, как преобразовать список словарей в объект DataFrame с использованием класса DataFrame в Pandas. Передав список словарей, вы легко можете создать DataFrame.

Преобразование списка словарей в фрейм данных Pandas

В каждом словаре содержится запись в DataFrame, при этом ключи становятся столбцами. Давайте рассмотрим пример, где каждый словарь содержит все ключи:

Поскольку каждый словарь в списке содержит одинаковые ключи, мы можем использовать несколько различных методов для достижения этой цели. Другие следующие методы также будут работать:

Работа с отсутствующими ключами при преобразовании списка словарей в таблицу данных Pandas

Давайте теперь рассмотрим более сложный пример. В приведенном ниже примере мы будем использовать словари, один из которых будет отсутствовать ключ. Давайте используем метод .from_dict() для чтения списка, чтобы увидеть, как будут прочитаны данные:

Этот метод возвращает ту же версию, даже если вы используете конструктор pd.DataFrame(), метод .from_dict() или метод .from_records(). Любой словарь, в котором отсутствует ключ, вернет отсутствующее значение, NaN.

Чтение только некоторых столбцов при преобразовании списка словарей в таблицу данных Pandas

Часто бывают случаи, когда вам необходимо прочитать словари в Pandas DataFrame, но при этом интересуют только некоторые столбцы. В таком случае можно использовать параметр columns=. Обратите внимание, что этот параметр доступен только в конструкторе pd.DataFrame() и методе pd.DataFrame.from_records(). Использование этого параметра в методе pd.DataFrame.from_dict() приведет к возникновению ValueError.

Давайте загрузим тот же список словарей, но прочитаем только два столбца:

Установка индекса при преобразовании списка словарей в таблицу данных Pandas

При создании DataFrame вы можете задать два различных типа индексов:

  1. Индекс DataFrame, который не является частью читаемых данных (например, 1, 2, 3), или

  2. Выберите столбец данных в качестве индекса DataFrame.

Давайте рассмотрим первый пример использования. Для этого мы можем полагаться только на конструктор pd.DataFrame() и метод pd.DataFrame.from_records(). Чтобы передать произвольный индекс, мы можем использовать параметр index=, чтобы передать список значений.

Давайте посмотрим, как это делается в Pandas:

Чтобы прочитать список словарей и установить индекс на основе одного из ключей, мы можем использовать любой из трех описанных выше методов. Хотя Pandas напрямую не предоставляет параметр для этого, мы можем использовать метод .set_index(), чтобы достичь желаемого.

Давайте прочитаем наши данные и используем столбец 'Name' в качестве индекса:

В заключительном разделе вы узнаете, как использовать функцию json_normalize() для чтения списка вложенных словарей в DataFrame Pandas.

json_normalize: чтение вложенных словарей в таблицу данных Pandas

При загрузке данных из разных источников, таких как веб-API, вам может быть возвращен список вложенных словарей. При чтении этих списков словарей с помощью показанных выше методов вложенные словари просто будут возвращены как словари в столбце.

Однако во многих случаях вы захотите, чтобы каждое из этих полей возвращало свой собственный столбец. Для этого мы можем использовать функцию pd.json_normalize()

Давайте рассмотрим пример, где словари в нашем списке являются вложенными, и используем функцию json_normalize для их преобразования в DataFrame:

Заключение

В этом учебнике вы узнали, как считывать список словарей в DataFrame Pandas. Вы узнали, как использовать четыре разных способа для достижения этого. Также вы научились считывать только подмножество столбцов, обрабатывать отсутствующие данные и как установить индекс. Наконец, вы узнали, как считывать список вложенных словарей в ваш DataFrame Pandas.

Дополнительные ресурсы

Чтобы узнать больше о смежных темах, ознакомьтесь с нижеследующими руководствами:

Последнее обновление