Изучаем функцию melt в библиотеке pandas
Метод `melt()` в библиотеке Pandas используется для "расплавления" (unstacking) данных, то есть преобразования широкого формата данных в длинный формат. Это означает, что столбцы, которые содержат значения для разных переменных, сливаются в один столбец, а значения этих переменных перемещаются в новый столбец.
Для понимания принципа работы `melt()`, представим следующую ситуацию. У нас есть DataFrame с данными о продажах различных товаров в разные даты:
python
import pandas as pd
data = {
'Дата': ['2022-01-01', '2022-01-02', '2022-01-03'],
'Товар 1': [10, 15, 12],
'Товар 2': [5, 8, 3],
'Товар 3': [7, 9, 4]
}
df = pd.DataFrame(data)
DataFrame имеет следующий вид:
Дата Товар 1 Товар 2 Товар 3
0 2022-01-01 10 5 7
1 2022-01-02 15 8 9
2 2022-01-03 12 3 4
Мы хотим переформатировать данные таким образом, чтобы каждая строка содержала информацию о продаже определенного товара в определенную дату. Для этого мы можем использовать метод `melt()` следующим образом:
python
melted_df = df.melt(id_vars=['Дата'], var_name='Товар', value_name='Продажи')
Здесь параметр `id_vars` задает столбцы, которые мы хотим оставить без изменений. В данном случае мы хотим оставить без изменений столбец "Дата". Параметр `var_name` задает название нового столбца, в котором будут содержаться названия товаров, а параметр `value_name` задает название нового столбца, в котором будут содержаться значения продаж.
Результатом выполнения данного кода будет новый DataFrame `melted_df` следующего вида:
Дата Товар Продажи
0 2022-01-01 Товар 1 10
1 2022-01-02 Товар 1 15
2 2022-01-03 Товар 1 12
3 2022-01-01 Товар 2 5
4 2022-01-02 Товар 2 8
5 2022-01-03 Товар 2 3
6 2022-01-01 Товар 3 7
7 2022-01-02 Товар 3 9
8 2022-01-03 Товар 3 4
Таким образом, мы получили длинный формат данных, в котором каждая строка представляет отдельное наблюдение (продажу) для определенного товара в определенную дату.
Метод `melt()` также позволяет указывать дополнительные параметры, например, `value_vars`, которым можно задать список столбцов, которые нужно "расплавить". Если нам необходимо "расплавить" только некоторые столбцы в DataFrame, мы можем передать их имена в параметр `value_vars`.
Пример:
python
melted_df = df.melt(id_vars=['Дата'], value_vars=['Товар 1', 'Товар 2'], var_name='Товар', value_name='Продажи')
Результат выполнения данного кода будет содержать только столбцы "Дата", "Товар" и "Продажи" и будет иметь вид:
Дата Товар Продажи
0 2022-01-01 Товар 1 10
1 2022-01-02 Товар 1 15
2 2022-01-03 Товар 1 12
3 2022-01-01 Товар 2 5
4 2022-01-02 Товар 2 8
5 2022-01-03 Товар 2 3
Таким образом, метод `melt()` позволяет легко преобразовывать данные из широкого формата в длинный формат для удобства анализа и визуализации данных.