Quitar el pivote de un dataframe de Python Pandas
Python es un lenguaje preferido para el análisis de datos debido a su gran ecosistema de paquetes centrados en datos. Uno de estos paquetes es Pandas, que simplifica significativamente la importación y el análisis de datos.
Este artículo utiliza la función Pandas dataframe melt()
para convertir un dataframe de formato ancho a largo y, opcionalmente, dejar establecidas las variables de identificador.
Use la función melt()
para deshacer un pivote de un marco de datos de Python Pandas
Esta función puede convertir un marco de datos en un formato en el que una o más columnas son variables de identificación (id vars). Todas las demás columnas, consideradas variables medidas (vars de valor), no están pivotadas en el eje de la fila, dejando solo dos columnas sin identificador, variable
y “valor”.
Sintaxis:
DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
Parámetros:
-
frame
: Este es el DataFrame que usamos. -
id_vars
: Esta es la columna que usamos como variable identificadora. -
value_vars
: Sirve para des-pivotar. var_name
: Esto especifica un nombre para la columna variable. Si no se especifica ninguno, se utiliza el marco, la variable o el nombre de las columnas.-
value_name
: La columna de valor debe tener un nombre único. -
col_level
: Usa este nivel para derretir las columnas si son MultiIndex. Devoluciones
: Convierte un DataFrame a un formato con una o más variables identificadoras en cada columna.
Ejemplo 1:
Primero, cree un marco de datos con las columnas A
, Bsc
, Cse
y xyz
.
import pandas as pd
df = pd.DataFrame(
{
"A": [12, 4, 5, 44, 1],
"Bsc": [5, 2, 54, 3, 2],
"Cse": [20, 16, 7, 3, 8],
"xyz": [14, 3, 17, 2, 6],
}
)
df
Producción :
| | A | Bsc | Cse | xyz |
| ---- | ---- | ---- | ---- | ---- |
| 0 | 12 | 5 | 20 | 14 |
| 1 | 4 | 2 | 16 | 3 |
| 2 | 5 | 54 | 7 | 17 |
| 3 | 44 | 3 | 3 | 2 |
| 4 | 1 | 2 | 8 | |
La siguiente función desvía el marco de datos. Aquí A
es un identificador, y la columna Bsc
es la variable de valor.
df.melt(id_vars=["A"], value_vars=["Bsc"])
Producción :
| | A | variable | value |
| ---- | ---- | -------- | ----- |
| 0 | 12 | Bsc | 5 |
| 1 | 4 | Bsc | 2 |
| 2 | 5 | Bsc | 54 |
| 3 | 44 | Bsc | 3 |
| 4 | 1 | Bsc | 2 |
Ejemplo 2:
Establezca la columna A
como la variable de identificación y las columnas Bsc
y Csc
como las variables de valor usando la función dataframe.melt()
.
df.melt(
id_vars=["A"],
value_vars=["Bsc", "Cse"],
var_name="Variable_column",
value_name="Value_column",
)
Producción :
| index | A | Variable_column | Value_column |
| ----- | ---- | --------------- | ------------ |
| 0 | 12 | Bsc | 5 |
| 1 | 4 | Bsc | 2 |
| 2 | 5 | Bsc | 54 |
| 3 | 44 | Bsc | 3 |
| 4 | 1 | Bsc | 2 |
| 5 | 12 | Cse | 20 |
| 6 | 4 | Cse | 16 |
| 7 | 5 | Cse | 7 |
| 8 | 44 | Cse | 3 |
| 9 | 1 | Cse | |
Conclusión
En este artículo, discutimos cómo descentrar un marco de datos o convertir un marco de datos en un formato largo para aumentar la cantidad de filas.
Para ello, utilizamos la función melt()
. Una columna se designa como identificador de variable, mientras que la otra es el valor del identificador.