Para facilitar el análisis de los datos en una tabla, podemos remodelar los datos en una forma más amigable para la computadora usando Pandas en Python. Pandas.melt() es una de las funciones para hacerlo. Pandas.melt() desvincula un DataFrame de formato ancho a formato largo.
composición de la relación
Los pandas se derriten() La función es útil para aplicar un DataFrame a un formato en el que una o más columnas son variables de identificación, mientras que todas las demás columnas, consideradas variables medidas, no están pivotadas en el eje de la fila, dejando solo dos columnas sin identificación, variable y valor.
Sintaxis de la función Python Pandas.melt()
Sintaxis: pandas.melt(marco, id_vars=Ninguno, value_vars=Ninguno,
var_name=Ninguno, value_name=’valor’, col_level=Ninguno)
Parámetros:
- marco : Marco de datos
- id_vars[tupla, lista o ndarray, opcional]: Columnas que se utilizarán como variables de identificación.
- value_vars[tupla, lista o ndarray, opcional]: Columnas que se van a desvincular. Si no se especifica, utiliza todas las columnas que no están configuradas como id_vars.
- nombre_var[escalar]: Nombre que se utilizará para la columna 'variable'. Si no hay ninguno, utiliza frame.columns.name o 'variable'.
- nombre_valor[escalar, 'valor' predeterminado]: Nombre que se utilizará para la columna 'valor'.
- col_level[int o cadena, opcional]: Si las columnas son un MultiIndex, utilice este nivel para fundir.
Crear un marco de datos de muestra
Aquí, hemos creado un DataFrame de muestra que usaremos en este artículo.
Python3
# importing pandas as pd> import> pandas as pd> # creating a dataframe> df>=> pd.DataFrame({>'Name'>: {>0>:>'John'>,>1>:>'Bob'>,>2>:>'Shiela'>},> >'Course'>: {>0>:>'Masters'>,>1>:>'Graduate'>,>2>:>'Graduate'>},> >'Age'>: {>0>:>27>,>1>:>23>,>2>:>21>}})> df> |
>
>

Melter () hacer en Pandas Ejemplo
A continuación se muestra el ejemplo de cómo podemos usar la función Pandas melt() de diferentes maneras en pandas :
Ejemplo 1: Ejemplo de pandas derretidos()
En este ejemplo, elpd.melt>La función se utiliza para desvincular la columna 'Curso' mientras se mantiene 'Nombre' como variable identificadora. El DataFrame resultante tiene tres columnas: 'Nombre', 'variable' (que contiene el nombre de la columna 'Curso') y 'valor' (que contiene los valores correspondientes de la columna 'Curso').
Python3
# Name is id_vars and Course is value_vars> pd.melt(df, id_vars>=>[>'Name'>], value_vars>=>[>'Course'>])> |
>
>
Producción:
Name variable value 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate>
Ejemplo 2: uso de id_vars y value_vars para fundir() de un DataFrame de Pandas
En este ejemplo, elpd.melt>La función se emplea para desvincular las columnas 'Curso' y 'Edad' mientras se usa 'Nombre' como variable identificadora.
Python3
# multiple unpivot columns> pd.melt(df, id_vars>=>[>'Name'>], value_vars>=>[>'Course'>,>'Age'>])> |
clave primaria y clave compuesta en sql
>
>
Producción:
Name variable value 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate 3 John Age 27 4 Bob Age 23 5 Shiela Age 21>
Ejemplo 3: uso de var_name y value_name para fundir() de un DataFrame de Pandas
En este ejemplo, elpd.melt>La función se utiliza con nombres de columnas personalizados. La columna 'Curso' se desvincula y se conserva 'Nombre' como identificador. El DataFrame resultante tiene las columnas 'Nombre', 'ChangedVarname' (para el nombre de la columna fusionada, establecido en 'Curso') y 'ChangedValname' (que contiene los valores correspondientes de la columna 'Curso').
Python3
cadena booleana java
# Names of ‘variable’ and ‘value’ columns can be customized> pd.melt(df, id_vars>=>[>'Name'>], value_vars>=>[>'Course'>],> >var_name>=>'ChangedVarname'>, value_name>=>'ChangedValname'>)> |
>
>
Producción:
Name ChangedVarname ChangedValname 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate>
Ejemplo 4: uso de ignore_index con la función Pandas.melt()
En este ejemplo, elpd.melt>La función se aplica para desvincular las columnas 'Curso' y 'Edad' mientras se usa 'Nombre' como variable identificadora. El índice original se ignora debido a laignore_index=True>parámetro.
Python3
# multiple unpivot columns with ignore_index> result>=> pd.melt(df, id_vars>=>[>'Name'>], value_vars>=>[>'Course'>,>'Age'>], ignore_index>=>True>)> print>(result)> |
>
>
Producción:
Name variable value 0 John Course Masters 1 Bob Course Graduate 2 Shiela Course Graduate 3 John Age 27 4 Bob Age 23 5 Shiela Age 21>