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’ .