Что такое Pandas Melt?
Pandas Melt в настоящее время является наиболее эффективной и гибкой функцией, которая используется для изменения формы фреймов данных Pandas. Он преобразует кадры данных из широкого формата в длинный, что делает его более полезным в области науки о данных. Широкий формат содержит значения, которые не повторяются в первом столбце. Длинный формат содержит значения, которые повторяются в первом столбце. В формате кода его можно вызвать с помощью «pd.melt()».
В части кода, заключенной в круглые скобки, можно использовать семь параметров. Это df, id_vars, value_vars, var_name, value_name, col_level и ignore_index. Единственный требуемый параметр — это «df», который используется для выбора фрейма данных, над которым вы хотите выполнить операции. Id_vars используется для именования столбцов, которые будут использоваться в качестве параметров идентификатора. Value_vars используется для именования столбцов, которые будут объединены. Var_name используется для обозначения столбца переменной в выходных данных. Value_name используется для обозначения столбца значений в выходных данных. Col_level используется, когда вам нужны столбцы с несколькими индексами. Наконец, ignore_index используется для игнорирования или сохранения исходного индекса.
Для этого параметра можно установить значение true или false. Все эти параметры можно использовать одновременно, и код будет выглядеть так: «pd.melt (df, id_vars = None, value_vars = None, var_name = ‘variable’, value_name = ‘value’, col_level = None, ignore_index = True) ».
Также читайте: Pandas и большие фреймы данных: как читать частями
Длинный фрейм данных и широкий фрейм данных
Выше мы говорили о длинных фреймах данных и широких фреймах данных, но концепцию легче понять, когда вы видите ее визуально. Имейте в виду, что широкие фреймы данных будут иметь много столбцов, которыми может быть сложно управлять. Между тем, длинный фрейм данных облегчит машинное обучение данных. Ниже приведен пример того, как может выглядеть широкий фрейм данных:
Широкий фрейм данных:
Человек Возраст Вес Рост
——– —– ——– ——–
Боб 32 168 180
Алиса 24 150 175
Стив 64 144 165
В этом примере у нас есть четыре столбца. Используя функцию плавления, мы можем эффективно преобразовать эти данные в длинный фрейм данных, как показано ниже:
Длинный кадр данных:
Значение переменной человека
——– ———- ——-
Боб, 32 года
Вес Боба 168
Боб Рост 180
Алиса Возраст 24
Алиса Вес 150
Алиса Рост 175
Стив Возраст 64 года
Стив Вес 144
Стив Рост 165
Сейчас колонны сократились с четырех до трех. Теперь давайте посмотрим, как превратить широкий фрейм данных в длинный фрейм данных с помощью кода Python. Во-первых, нам нужно создать широкий фрейм данных. Код для этого показан ниже:
# Создание образца данных
import pandas as pd# creating a dataframedf = pd.DataFrame(
{
'Item': ('Cereals', 'Dairy', 'Frozen', 'Meat'),
'Price': (100, 50, 200, 250),
'Hour_1': (5, 5, 3, 8),
'Hour_2': (8, 8, 2, 1),
'Hour_3': (7, 7, 8, 2)
}
)
print(df)
Была создана таблица с зерновыми, молочными, замороженными и мясными товарами. Есть пять столбцов с названиями «товары», «цена», «час 1», «час 2» и «час 3». Это легко читать людям, но сложнее для машины. Из-за этого нам нужно немного изменить форму и превратить его в длинный фрейм данных. Ниже приведен пример того, как будет выглядеть фрейм данных:
Цена товара Час_1 Час_2 Час_3
——– ——- ——– ——– ——–
Крупы 100 5 8 7
Молочные продукты 50 5 8 7
Замороженное 200 3 2 8
Мясо 250 8 1 2
Теперь давайте воспользуемся Python, чтобы преобразовать этот фрейм данных в длинный формат. У нас будет один столбец, содержащий товар, один столбец, содержащий часы, и один столбец, содержащий продажи. Ниже приведен код того, как это сделать:
melt_df = pd.melt(
df,
id_vars=('Item'),
value_vars=('Hour_1','Hour_2','Hour_3'),
var_name='Hour',
value_name='Sales',
col_level=None
)melt_df
Вывод этого кода можно увидеть ниже:
Продажи товара в час
——— ——– ——-
Крупы Час_1 5
Молочный час_1 5
Ледяной час_1 3
Мясной час_1 8
Крупы Час_2 8
Молочный час_2 8
Ледяной час_2 2
Мясной час_2 1
Крупы Час_3 7
Молочный час_3 7
Ледяной час_3 8
Мясной час_3 2
Теперь данные сократились с пяти столбцов до трех, что позволяет упростить применение машинного обучения к данным. Например, мы можем сгруппировать данные по товарам и продажам, используя функцию «группировать по». Group by — это функция Pandas, которая позволяет пользователю группировать строки в соответствии с определенными значениями в каждом столбце. Это даст нам общий объем продаж. Это можно легко сделать в одной строке кода, просто набрав «melt_df.groupby(`Item`) (`Sales`).sum()». Вывод этого кода показан ниже:
Продажа предметов
——— ——-
Крупы 20
Молочная 20
Холодное сердце 13
Мясо 11
Это говорит нам, сколько каждого товара было продано. Мы также можем сгруппировать по часам, чтобы увидеть, сколько продаж произошло в час. Код для этого: «melt_df.groupby(`Hour`) (`Sales).sum()». Результат этого можно увидеть ниже:
Час продаж
——— ——-
Час_1 21
Час_2 19
Час_3 24
Как вы можете видеть, наличие данных в длинной форме значительно упрощает работу. Кадр данных также можно легко обновить с помощью Pandas Melt. Давайте попробуем добавить новый столбец в названную цену. Ниже приведен код, необходимый для этого:
melt_df = pd.melt(
df,
id_vars=('Item','Price'),
value_vars=('Hour_1','Hour_2','Hour_3'),
var_name='Hour',
value_name='Sales',
col_level=None
)melt_df
Теперь наш кадр данных длинного формата выглядит следующим образом:
Товар Цена Час продаж
——— ——- ——– ——-
Крупы 100 Час_1 5
Молочные продукты 50 Час_1 5
Замороженное 200 Час_1 3
Мясо 250 Час_1 8
Крупы 100 Час_2 8
Молочные продукты 50 Час_2 8
Замороженное 200 Час_2 2
Мясо 250 Час_2 1
Крупы 100 Час_3 7
Молочные продукты 50 Час_3 7
Замороженное 200 Час_3 8
Мясо 250 Час_3 2
Как вы можете видеть, новый столбец был легко добавлен в длинный фрейм данных без проблем. Теперь с помощью столбца цен мы можем рассчитать такие вещи, как общий доход или даже доход по позициям или по часам. Все это можно сделать с помощью группы по функциям, и код очень похож на тот, что показан выше.
Читайте также: Что такое Argmax в машинном обучении?
Обращение вспять таяния панд
Функцию Pandas Melt также можно обратить вспять, что позволяет нам перейти от длинного фрейма данных обратно к широкому фрейму данных. Это можно сделать с помощью функции поворота и вернуть исходный фрейм данных. Документацию по функции поворота можно найти по адресу https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.pivot.html. Чтобы отменить Pandas Melt, значение индекса функции поворота должно быть таким же, как значение «id_vars» во фрейме данных. Значение столбца должно быть передано как имя столбца переменной. Код для этого можно увидеть ниже:
df_unmelted = melt_df.pivot_table(
index('Item','Price'),columns='Hour',values='Sales'
)df_unmelted
При этом фрейм данных снова принимает широкий формат, как показано ниже:
Цена товара Час_1 Час_2 Час_3
——— ——- ——– ——– ——–
Крупы 100 5 8 7
Молочные продукты 50 5 8 7
Замороженное 200 3 2 8
Мясо 250 8 1 2
Читайте также: Искусственный интеллект и отоларингология.
Заключение
Я надеюсь, что эта статья показала вам важность Pandas Melt в контексте науки о данных. Эффективное изменение широкого фрейма данных на длинный помогает облегчить работу других алгоритмов машинного обучения. Спасибо, что прочитали эту статью.
pd.melt()
Функция в Pandas — бесценный инструмент предварительной обработки данных, важный шаг в любом рабочем процессе искусственного интеллекта или машинного обучения. Преобразуя набор данных из широкого формата в длинный формат, pd.melt()
позволяет более эффективно анализировать данные и упрощает алгоритмам интерпретацию данных. Это, в свою очередь, повышает производительность моделей искусственного интеллекта и машинного обучения, позволяя им делать более точные прогнозы.
pd.melt()
обеспечивает высокий уровень гибкости, позволяя специалистам по данным указывать, какие столбцы следует оставить неизменными, а какие отменить. Такой детальный контроль позволяет адаптировать процесс преобразования данных к конкретным требованиям каждого проекта искусственного интеллекта или машинного обучения. Учитывая его универсальность и эффективность, pd.melt()
— это обязательный инструмент в наборе инструментов любого специалиста по данным, облегчающий разработку надежных и эффективных решений в области искусственного интеллекта и машинного обучения.
Рекомендации
Феннер, Марк. Машинное обучение с Python для всех. Аддисон-Уэсли Профессионал, 2019.
Молин, Стефани и Кен Джи. Практический анализ данных с помощью Pandas: справочник по науке о данных Python для сбора, обработки, анализа и визуализации данных. Пакт Паблишинг, ООО, 2021.
Саркар, Дипанджан и др. Практическое машинное обучение с помощью Python: руководство для решения проблем по созданию реальных интеллектуальных систем. Апресс, 2017.