РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
352 of 687 menu

Функция melt

Функция melt применяется к DataFrame и преобразует его из широкого формата в длинный. Она "расплавляет" таблицу, превращая указанные столбцы в две новые колонки: одна содержит имена переменных, другая - их значения. Это полезно для подготовки данных к анализу или визуализации.

Основные параметры функции: id_vars - столбцы, которые останутся идентификаторами (не будут "расплавлены"), value_vars - столбцы, которые нужно преобразовать (если не указаны, преобразуются все, кроме id_vars), var_name - имя для столбца с именами переменных (по умолчанию 'variable'), value_name - имя для столбца со значениями (по умолчанию 'value').

Синтаксис

pd.melt(df, id_vars=None, value_vars=None, var_name='variable', value_name='value')

Пример

Преобразуем таблицу, оставив столбец 'a' как идентификатор, а столбцы 'b' и 'c' расплавим:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3], 'b': [10, 20, 30], 'c': [100, 200, 300] }) res = pd.melt(df, id_vars=['a'], value_vars=['b', 'c']) print(res)

Результат выполнения кода:

a variable value 0 1 b 10 1 2 b 20 2 3 b 30 3 1 c 100 4 2 c 200 5 3 c 300

Пример

Изменим имена столбцов для переменной и значения с помощью параметров var_name и value_name:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3], 'b': [10, 20, 30], 'c': [100, 200, 300] }) res = pd.melt(df, id_vars=['a'], value_vars=['b', 'c'], var_name='param', value_name='val') print(res)

Результат выполнения кода:

a param val 0 1 b 10 1 2 b 20 2 3 b 30 3 1 c 100 4 2 c 200 5 3 c 300

Пример

Если не указать value_vars, то "расплавятся" все столбцы, кроме указанных в id_vars:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2], 'b': [10, 20], 'c': [100, 200], 'd': [1000, 2000] }) res = pd.melt(df, id_vars=['a']) print(res)

Результат выполнения кода:

a variable value 0 1 b 10 1 2 b 20 2 1 c 100 3 2 c 200 4 1 d 1000 5 2 d 2000

Пример

Преобразуем таблицу, где несколько столбцов-идентификаторов:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2], 'b': ['x', 'y'], 'c': [10, 20], 'd': [100, 200] }) res = pd.melt(df, id_vars=['a', 'b'], value_vars=['c', 'd']) print(res)

Результат выполнения кода:

a b variable value 0 1 x c 10 1 2 y c 20 2 1 x d 100 3 2 y d 200

Смотрите также

  • функция pivot,
    которая выполняет обратное преобразование - из длинного формата в широкий
  • функция pivot_table,
    которая создаёт сводную таблицу с агрегацией данных
  • функция wide_to_long,
    которая преобразует широкий формат в длинный с более сложной логикой
  • функция crosstab,
    которая строит таблицу частот для двух и более факторов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить