
Этот метод поможет вам поместить ваши данные в аккуратный формат.
Многие алгоритмы Data Science ожидают получения данных в аккуратном формате.
Под аккуратными данными я подразумеваю следующее:
У каждой переменной должен быть свой столбец.
У каждого наблюдения должна быть своя строка.
У каждого значения должна быть своя ячейка.
Итак, зная, что мы продвигаемся вперед, представляем простой пример данных, которые не являются аккуратными. Это происходит, когда у нас есть записи для одной и той же переменной в разных столбцах.
# Creating a df
df_rows = [ ['Anna', 100, 90, 60, 40, 80, 85],
['Charles', 90, 90, 80, 80, 80, 85],
['Bruno', 80, 90, 60, 70, 80, 75],
['Sven', 70, 70, 60, 40, 70, 85],
['Harry', 80, 90, 60, 40, 80, 85],
['Dalila', 60, 90, 60, 40, 80, 85],
['Maria', 100, 90, 100, 55, 80, 85],
['Srini', 100, 60, 60, 50, 60, 85],
['Marta', 90, 90, 60, 40, 80, 85],
['Dan', 100, 90, 60, 40, 80, 85],
['Shannon', 100, 90, 100, 1000, 80, 85],
['Albert', 50, 90, 50, 40, 80, 85] ]
df = pd.DataFrame(df_rows,
columns=['name', 'test1', 'test2', 'test3', 'test4', 'test5', 'test6'])

Эти данные не аккуратны, потому что каждый столбец представляет собой тестовую оценку, поэтому все эти столбцы представляют собой одну и ту же переменную, которая на самом деле ... ну, оценка.
В зависимости от того, что мы хотим сделать, ожидается, что все оценки за тест будут в одном столбце, поэтому алгоритмы распознают это как единую переменную.
Теперь предположим, что у нас также есть переменные города, возраста, пола и т. Д. в этом наборе данных. Если бы мы представили это таким образом, каждый столбец можно было бы рассматривать как одну переменную, что придает переменной оценки огромный вес в прогнозах, поскольку она умножается на 6.
Функция плавления
Функция pd.melt() элегантно решает эту проблему. Чтобы использовать это, нам понадобится следующий синтаксис.
Синтаксис метода требует:
- Dataframe
id_vars: сводный столбец для определения данных, связанных с каждым вводом.value_vars: столбцы, которые нужно преобразовать в строкиvars_name: имя столбца, в котором имена столбцов преобразованы в строку.value_name: Имя столбца, который принимает значения столбцов, преобразованных в строку.
# Transforming with Pandas Melt
pd.melt(df,
id_vars='name',
value_vars=df.drop('name', axis=1),
var_name='test',
value_name='score')

Ссылка
Ссылка на Документацию Pandas Melt.
Следуйте за мной, чтобы увидеть больше сообщений. Вот мой блог на Medium.