Распакуйте Ваши Данные с Помощью Функции Melt в Pandas
В этом руководстве вы научитесь использовать функцию melt библиотеки Pandas для преобразования данных из широкого формата в длинный. Если вы работаете с данными в Python, преобразование и изменение формы ваших данных является необходимым навыком, и именно здесь в игру вступает функция melt()
из Pandas. Очистка ваших данных и их трансформация являются важным навыком в науке о данных и инженерии данных.
Это руководство предоставляет ясное и увлекательное введение в эту мощную функцию, насыщенное примерами, которые охватывают всё от основ до продвинутого использования.
К концу этого руководства вы научитесь следующему:
Что такое функция Pandas
melt()
и ее цель в изменении данныхКак настроить и использовать функцию плавления pandas с пошаговым описанием ее синтаксиса и параметров.
Различие между переменными-идентификаторами, переменными-значениями и измеряемыми переменными, а также как выбрать правильную комбинацию для ваших нужд.
Как настроить имена столбцов в объединенном DataFrame, используя id_vars и value_vars
Передовые методы плавления, такие как работа с MultiIndex DataFrames и интеграция плавления с другими операциями pandas.
Оглавление
Понимание функции Pandas Melt()
Функция melt()
в Pandas используется для преобразования DataFrame из широкого формата в длинный формат.
Это означает, что мы преобразуем организованный DataFrame в стиле сводной таблицы, где несколько столбцов представляют различные переменные, в структуру, где данные организованы в виде ключ-значение (с переменными в одном столбце и их значениями в другом).
Давайте погрузимся в изучение синтаксиса функции Pandas melt.
Мы видим, что функция предлагает довольно много различных параметров, для всех из которых, кроме одного, предусмотрены аргументы по умолчанию. В таблице ниже представлены параметры, их аргументы по умолчанию, краткое описание и принятые значения.
frame
–
Входной DataFrame, который нужно расплавить
A Pandas DataFrame
id_vars
None
Переменные идентификатора, которые останутся неизменными в результирующем DataFrame.
Scalar/list of Scalars/column index (integer)
value_vars
None
Переменные для преобразования в длинный формат
Scalar/list of Scalars/column index (integer)
var_name
None
Пользовательское имя для результирующего столбца «переменная».
A string representing the new column name
value_name
“value”
Пользовательское имя для результирующего столбца «значение».
A string representing the new column name
col_level
None
Для MultiIndex DataFrames — уровень объединяемого столбца.
An integer/string/column index
ignore_index
True
Добавляет новый индекс вместо сохранения предыдущей структуры индекса.
Boolean: True/False
По умолчанию, когда параметры id_vars
, value_vars
и col_level
не указаны, Pandas предполагает, что все столбцы, не являющиеся идентификаторами, являются value_vars
, и проводит преобразование всего DataFrame.
Давайте теперь погрузимся в то, как мы можем использовать функцию melt()
в Pandas, рассматривая различные примеры.
Загрузка образца DataFrame Pandas
В этом учебнике мы будем работать с простой таблицей данных Pandas, которую мы используем в руководстве по сводным таблицам Pandas. Она была немного упрощена, чтобы упростить понимание функции.
Давайте рассмотрим как загрузить его и напечатать первые несколько записей. Набор данных содержит информацию о различных покупках типов одежды.
Теперь, когда у вас есть хорошее представление о данных, давайте перейдем к использованию функции.
Использование функции Pandas Melt() для разворота DataFrame
В этом разделе мы сосредоточимся на использовании параметра id_vars
функции melt
библиотеки pandas для преобразования DataFrame из широкого формата в длинный.
При преобразовании DataFrame в "плавленый" формат, id_vars
относится к идентификаторам переменных, то есть к столбцам в вашем DataFrame, которые вы хотите оставить без изменений, в то время как остальные столбцы перестраиваются из широкого формата в длинный. Эти переменные-идентификаторы предоставляют контекст для полученного "плавленого" DataFrame.
Давайте посмотрим, как мы можем использовать Pandas для "расплавления" DataFrame:
В указанном выше блоке кода мы уточнили, что хотим использовать id_vars='Region'
. Указывая id_vars='Region'
, мы сообщаем pandas оставить столбец ‘Region’ без изменений, в то время как остальные столбцы в DataFrame будут "расплавлены".
Аналогично, параметр id_vars=
принимает несколько меток столбцов. Давайте исследуем это в следующем разделе.
Использование нескольких переменных-идентификаторов в Pandas Melt()
Мы также можем преобразовать DataFrame, используя несколько переменных. Для использования нескольких столбцов в функции Pandas melt в id_vars=
, мы можем передать список меток столбцов. Это означает, что несколько столбцов останутся без изменений в результирующем DataFrame.
Давайте посмотрим, как мы можем "расплавить" DataFrame, сохраняя столбцы Region
и Type
без изменений, передав список меток:
В полученном выше DataFrame мы видим, что столбцы Region и Type остались без изменений, но другие столбцы были трансформированы из широкого формата в длинный.
Использование переменных значений в функции Pandas Melt()
По умолчанию Pandas будет использовать все оставшиеся столбцы в параметре value_vars=
, что означает, что все столбцы будут преобразованы. Если мы хотим преобразовать (или развернуть) только один столбец, мы можем указать метку столбца в параметре
Давайте посмотрим, как мы можем распаковать только столбец с продажами, разбитый по регионам:
В приведенном выше примере мы сохранили столбец Регион без изменений, а данные о продажах преобразовали. Это означает, что мы получили отдельную запись для значений продаж каждого региона.
Аналогично, мы можем включить несколько столбцов в поле значений. Давайте посмотрим, как это выглядит в следующем разделе.
Использование переменных с несколькими значениями в Pandas Melt()
Передавая несколько меток столбцов в параметр value_vars=
функции melt()
Pandas, вы можете выполнить обратное преобразование нескольких колонок. Это вернет пары ключ-значение для двух столбцов, разделенные по столбцам, указанным в id_vars=
Давайте посмотрим, как это выглядит:
Мы видим, что столбец Регион остался неизменным. Были добавлены два столбца (переменная и значение), представляющие пары ключ-значение для столбцов Продажи и Единицы.
В следующем разделе вы узнаете, как настроить имена переменных значений и идентификаторов, используя функцию melt()
в Pandas.
Настройка имен переменных значений и идентификаторов в Pandas Melt()
При использовании функции "расплавления" (melt
) в Pandas, по умолчанию, названия столбцов устанавливаются как variable
и value
. Чтобы изменить это поведение, можно воспользоваться параметрами var_name=
и value_name=
.
Оба эти параметра принимают одну строку в качестве входных данных. Давайте посмотрим, как мы можем настроить их, передавая в качестве аргументов Категорию и Сумму.
В получившемся выше DataFrame, мы добавили var_name='Категория'
и value_name='Сумма'
. Это привело к тому, что мы передали более чистые, понятные имена нашим колонкам.
Сохранение исходного индекса DataFrame в Pandas Melt()
По умолчанию Pandas перезаписывает предыдущий индекс. Можно изменить это поведение, настроив параметр ignore_index=
. По умолчанию он установлен в значение True
, но если мы изменяем его на False
, то будет сохранён оригинальный индекс. Давайте посмотрим, как это выглядит:
В приведенном выше примере мы изменили параметр ignore_index=
на False
. Это означает, что был сохранен исходный индекс (что объясняет, почему мы видим повторение индексов от 0 до 4).
Использование col_level в функции плавления Pandas с многоиндексными столбцами
Параметр col_level
становится особенно полезным при работе с DataFrame, содержащими MultiIndex по столбцам. Он позволяет определить, какой уровень индекса столбца следует использовать при трансформации DataFrame с помощью функции "melt". Давайте рассмотрим это на простом примере:
В этом примере у нас есть DataFrame с мультииндексными столбцами, где ‘Category’ (Уровень 0) представляет собой ‘Sales’ (Продажи) и ‘Profit’ (Прибыль), а ‘Year’ (Уровень 1) представляет ‘2019’ и ‘2020’. Когда мы устанавливаем col_level='Year'
, функция melt
в pandas использует уровень ‘Year’ мультииндекса в качестве столбца ‘variable’ в результирующем «расплавленном» DataFrame.
В кратце, параметр col_level
позволяет управлять процессом "расплавления" в DataFrames с мультииндексными колонками, предоставляя вам больше контроля над тем, как ваши данные перестраиваются при использовании функции melt
в pandas.
Заключение
Поздравляем с достижением конца этого всестороннего руководства по функции Pandas melt! Мы рассмотрели широкий спектр концепций, инструментов и примеров, которые исследовали многие возможности этого мощного инструмента для манипулирования данными. Чтобы подвести итог, вот что мы узнали:
Назначение и функциональность функции плавления Pandas при преобразовании данных из широкого формата в длинный.
Как настроить и эффективно использовать функцию плавления Pandas, углубляясь в синтаксис и параметры функции плавления
Определение разницы между переменными-идентификаторами, переменными-значениями и измеряемыми переменными, а также то, почему выбор правильной комбинации id_vars и value_vars имеет решающее значение.
Настройка имен столбцов в объединенном DataFrame с использованием параметров id_vars, value_vars, var_name и value_name.
Передовые методы плавления, такие как работа с MultiIndex DataFrames и интеграция функции плавления с другими операциями Pandas.
С полученными знаниями из этого учебника вы теперь прекрасно подготовлены для решения сложных задач по манипулированию данными и их преобразованию для улучшения обработки и анализа. Продолжайте изучать дополнительные ресурсы и практиковать свои навыки, чтобы стать экспертом в перестройке данных с использованием pandas. Помните, ключ к освоению любого инструмента - это постоянная практика и экспериментирование. Счастливого преобразования данных!
Узнайте больше о функции melt
, ознакомившись с официальной документацией.
Last updated