Función pandas pandas.melt()
-
La sintaxis de
pandas.melt()
-
Códigos de ejemplo:
pandas.melt()
-
Códigos de ejemplo:
pandas.melt()
Con una sola columna comoid_vars
-
Códigos de ejemplo:
pandas.melt()
Con columnas salteadas -
Códigos de ejemplo:
pandas.melt()
Con múltiples columnas
La función pandas.melt()
remodela o transforma un DataFrame
existente. Cambia la orientación del DataFrame
de un formato ancho a uno largo.
La sintaxis de pandas.melt()
pandas.melt(dataframe, id_vars, value_vars, var_name, value_name, col_level)
Parámetros
Dataframe |
obligatorio | Es el DataFrame que queremos cambiar al formato largo. |
id_vars |
opcional | Puede ser un tuple , list , o una array N-dimensional. Es la columna utilizada para las variables de identificación. Puedes seleccionar más de una columna de identificadores. |
value_vars |
opcional | Puede ser un tuple , list , o una array N-dimensional. Por defecto, las columnas no especificadas como variables identificadoras son variables de valor. También puedes seleccionarlas. |
var_name |
opcional | Es una variable de tipo scalar . Es el nombre de la columna identificadora. Por defecto, es variable . |
value_name |
opcional | Es una variable de tipo scalar . Es el nombre de la columna de no identificadores. Por defecto, es value . |
col_level |
opcional | Es un entero o una cadena de caracteres. En el caso de las columnas de múltiples índices, podemos usar este parámetro para transformar nuestro DataFrame . |
Retorna
Devuelve un DataFrame
transformado que contiene una o más columnas identificadoras y sólo dos columnas no identificadoras llamadas variable y valor.
Códigos de ejemplo: pandas.melt()
Al principio, comprobaremos esta función pasando sólo el parámetro obligatorio DataFrame
.
import pandas as pd
dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 78,4: 95},
'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
'Obtained Marks': {0: '90%', 1: '75%', 2: '82%',3: '64%',4: '45%'}})
dataframe1 = pd.melt(dataframe)
print(dataframe1)
Nuestro DataFrame
se ve como
Attendance Name Obtained Marks
0 60 Olivia 90%
1 100 John 75%
2 80 Laura 82%
3 78 Ben 64%
4 95 Kevin 45%
Resultado:
variable value
0 Attendance 60
1 Attendance 100
2 Attendance 80
3 Attendance 78
4 Attendance 95
5 Name Olivia
6 Name John
7 Name Laura
8 Name Ben
9 Name Kevin
10 Obtained Marks 90%
11 Obtained Marks 75%
12 Obtained Marks 82%
13 Obtained Marks 64%
14 Obtained Marks 45%
Aquí se puede ver que en la salida no hay una columna de identificación. Tenemos dos columnas sin identificador. Cada columna del DataFrame
original es ahora una fila en la salida DataFrame
.
Ahora pasaremos los parámetros opcionales y comprobaremos los resultados.
Códigos de ejemplo: pandas.melt()
Con una sola columna como id_vars
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(dataframe, id_vars=["Name"])
print(dataframe1)
Resultado:
Name variable value
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
5 Olivia Obtained Marks 90%
6 John Obtained Marks 75%
7 Laura Obtained Marks 82%
8 Ben Obtained Marks 64%
9 Kevin Obtained Marks 45%
La columna identificadora se especifica como Name
, y las columnas variable
y value
están junto a ella con los valores extraídos del dataframe original.
También podríamos asignar nombres de var_name
y value_name
para reemplazar los variable
y value
predeterminados.
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(
dataframe, id_vars=["Name"], var_name="Performance", value_name="Success"
)
print(dataframe1)
Resultado:
Name Performance Success
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
5 Olivia Obtained Marks 90%
6 John Obtained Marks 75%
7 Laura Obtained Marks 82%
8 Ben Obtained Marks 64%
9 Kevin Obtained Marks 45%
Códigos de ejemplo: pandas.melt()
Con columnas salteadas
Si queremos comprobar sólo la asistencia, tenemos que especificar el value_vars
.
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(
dataframe,
id_vars=["Name"],
value_vars="Attendance",
var_name="Performance",
value_name="Success",
)
print(dataframe1)
Resultado:
Name Performance Success
0 Olivia Attendance 60
1 John Attendance 100
2 Laura Attendance 80
3 Ben Attendance 78
4 Kevin Attendance 95
Sólo muestra la información de la columna Attendance
en el DataFrame original.
Códigos de ejemplo: pandas.melt()
Con múltiples columnas
Añadimos una columna extra ID
al DataFrame de la demostración.
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
"ID": {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
}
)
dataframe1 = pd.melt(dataframe, id_vars=["ID", "Name"])
print(dataframe1)
Resultado:
ID Name variable value
0 1 Olivia Attendance 60
1 2 John Attendance 100
2 3 Laura Attendance 80
3 4 Ben Attendance 78
4 5 Kevin Attendance 95
5 1 Olivia Obtained Marks 90%
6 2 John Obtained Marks 75%
7 3 Laura Obtained Marks 82%
8 4 Ben Obtained Marks 64%
9 5 Kevin Obtained Marks 45%
Ambas columnas ID
y Name
son asignadas como las columnas de identificación.