Преобразование ваших данных из полной формы в широкую форму

В последнем уроке мы продемонстрировали функцию Pandas melt для преобразования формы с широкими данными в полную форму. В этом уроке мы сосредоточимся на противоположном процессе. Чтобы объединить всех на одной странице, представляем визуальную информацию о проблеме, которую мы пытаемся решить:

Большинство из нас работали с подобными сценариями при использовании Microsoft Excel. Да, широкая форма таблицы напоминает знаменитые сводные таблицы. Мы обычно используем их для обобщения наших данных на основе определенного измерения (в нашем случае категории расходов). Для выполнения этих задач суммирования Pandas предлагает готовую функцию pivot_table. Пошаговый подход к реализации этой функции подробно описан ниже:

Предположение и рекомендация

Быть практическим — это ключ к мастерству программирования. Мы рекомендуем вам продолжать применять коды, следуя указаниям руководства. Пример данных и связанная записная книжка Jupiter доступны в папке Scenario_3 по этой ссылке GitHub.

Если вы новичок в GitHub и хотите изучить его, прочитайте этот учебник. Чтобы настроить новую среду Python в своей системе, прочитайте этот учебник.

Ниже приведен список концепций Python и функций/методов pandas, используемых в руководстве:

Панды функции

  • read_csv
  • сводная_таблица

Давайте начнем

Шаг 1 — Подготовьте данные

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

  • Год — календарный год
  • Месяц — Месяц года
  • Категория расходов — Категории, по которым семья понесла расходы
  • Expense Value — Сумма расходов, понесенных семьей.

Шаг 2 — Импорт пакета pandas и набора данных в Python.

Когда у вас есть данные, следующим шагом будет их импорт в вашу среду Python.

#### Sample Code
#### Importing Pandas
import pandas as pd
#### Importing Data File - Change the Windows Folder Location
imp_data = pd.read_csv("C:\\Ujjwal\\Analytics\\Git\\Scenario_3\\Expenses_Long.csv")

Мы использовали функцию Pandas read_csv для чтения данных в Python.

Шаг 3 — Создание широкой формы таблицы расходов (без агрегации).

После того, как мы прочитали данные, примените функцию Pandas pivot_table, чтобы создать широкую форму входного фрейма данных.

#### Create the wide-form
Wide_data = pd.pivot_table(imp_data,index=["Year","Expense Category"], columns="Month",values = "Expense Value").reset_index()
#### Sample Output
Wide_data.head()

Пояснение

Функция pivot_table ожидает ввода следующих параметров:

  • Имя фрейма данных. Первый аргумент функции pivot_table — это фрейм данных, к которому мы должны применить операцию.
  • Индекс — это синоним раздела строк сводной таблицы Excel. Имена столбцов, переданные в параметр индекса, будут формировать строки окончательного фрейма данных.
  • Столбцы — это синоним раздела столбцов сводной таблицы Excel. Имена столбцов, переданные в параметр столбца, сформируют новые столбцы окончательного фрейма данных.
  • Значения. Это синоним раздела значений сводной таблицы Excel. Имена столбцов, переданные в параметр values ​​, будут использоваться для заполнения ячеек окончательного фрейма данных.

Примечания

  • reset_index() — мы использовали функцию reset_index для удаления многоуровневого индекса, созданного сводной_таблицей.
  • Чтобы передавать несколько столбцов в параметры индекса, столбца или значения, используйте их в виде списков.
  • Как и функция melt, pivot_table также возвращает новый сводной фрейм данных в качестве выходных данных. Запишите эти выходные данные в новую переменную (в нашем случае Wide_data) для использования в будущем.

Заключительное примечание

Знаете ли вы, что сводная таблица — одна из самых распространенных функций Microsoft Excel? Быстрая реализация шагов обработки данных в Python может существенно сократить жизненный цикл построения модели. Я надеюсь, что решение, представленное выше, было полезным.

Знаете ли вы, как агрегировать данные при преобразовании их в полную форму? Можете ли вы рассчитать средние расходы в месяц в 2018, 2019 и 2020 годах по разным категориям расходов? Чтобы найти ответ, проверьте код, представленный в репозитории GitHub.

ПРИЯТНОГО ОБУЧЕНИЯ! ! ! !