Этот метод поможет вам поместить ваши данные в аккуратный формат.

Многие алгоритмы 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.