¿Qué es el método Pandas.melt()?

La función Pandas.melt() convierte un DataFrame de formato ancho en un DataFrame de formato largo al “fundir” o “desorientar” los datos.

Transforma un DataFrame con múltiples columnas en un DataFrame con menos columnas, donde una o más columnas son variables de identificación y el resto se fusionan en una sola variable y columnas de valor.

Sintaxis Pandas.melt()

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, 
            value_name='value', col_level=None, ignore_index=True)

Parámetros

frame:

el marco de datos de entrada para derretir.

id_vars: Columnas para usar como variables identificadoras. Estas columnas permanecerán sin cambios en el DataFrame resultante.

value_vars: Columnas para fundirse en las columnas de variables y valores. De forma predeterminada, se fusionan todas las columnas que no se establecen como variables de identificador.

var_name: el nombre que se utilizará para la columna variable. El valor predeterminado es None que deduce el nombre del DataFrame de entrada.

value_name: el nombre que se utilizará para la columna de valor. El valor predeterminado es ‘value‘.

col_level: para DataFrames con columnas de varios niveles, especifique qué nivel fusionar. El valor predeterminado es None que funde todos los niveles.

ignore_index: si es verdadero, el índice del frame de datos resultante se restablece. El valor por defecto es verdadero.

Ejemplo

import pandas as pd

data = {
  'Name': ['Krunal', 'Ankit', 'Rushabh', 'Dhaval', 'Hemang'],
  'Age': [25, 30, 22, 28, 35],
  'Score': [90, 85, 92, 88, 78]
}
df = pd.DataFrame(data)
print("Original DataFrame:")
print(df)

melted_df = pd.melt(df, id_vars=['Name'], value_vars=[
            'Age', 'Score'], var_name='Attribute', value_name='Value')
print("\nMelted DataFrame:")
print(melted_df)

Producción

Original DataFrame:
   Name    Age   Score
0  Krunal  25     90
1  Ankit   30     85
2  Rushabh 22     92
3  Dhaval  28     88
4  Hemang  35     78

Melted DataFrame:
   Name    Attribute  Value
0  Krunal    Age       25
1  Ankit     Age       30
2  Rushabh   Age       22
3  Dhaval    Age       28
4  Hemang    Age       35
5  Krunal   Score      90
6  Ankit    Score      85
7  Rushabh  Score      92
8  Dhaval   Score      88
9  Hemang   Score      78

En este código, creamos un marco de datos de muestra con las columnas ‘Nombre’ , ‘Edad’ y ‘Puntuación’ .

En el siguiente paso, fusionamos el DataFrame usando la columna ‘Nombre’ como variable de identificación y ‘Edad’ y ‘Puntuación’ como variables de valor.

El DataFrame final tiene una columna de ‘Nombre’ , una columna de ‘Atributo’ (columna de variable) y una columna de ‘Valor’ .

Relacionados
Salir de la versión móvil