Python

Creación de variables dummies con Pandas (variables binarias para aprendizaje automático)

La mayoría de los algoritmos de aprendizaje automático solamente pueden trabajar con datos numéricos. Pero, en muchas ocasiones, lo que se tienen son datos de tipo categórico. Debido a que los algoritmos no pueden realizar las operaciones matemáticas sobre estos, es necesario transformarlos antes de poder emplearlos en el entrenamiento de cualquier modelo de aprendizaje automático. Algo que se puede conseguir mediante la creación de variables dummies o variables binarias. El método más habitual para la creación de variables dummies es convertir cada una de las categorías de la variable original en una nueva columna binaria, si la fila corresponde con la categoría ésta tendrá como valor 1, en cualquier otro caso tendrá 0. Veamos cómo se pueden crear las variables dummies con Pandas mediante la función get_dummies().

Conjunto de datos de ejemplo

Supongamos que contamos con un conjunto de datos en el que se tiene el precio de un producto y su color. Por ejemplo, el conjunto que se muestra a continuación

import pandas as pd

data = pd.DataFrame({ 'precio': [45, 53, 60, 42, 34],
                      'color': ['rojo', 'verde', 'azul', 'verde', 'rojo'] })
data
   precio  color
0      45   rojo
1      53  verde
2      60   azul
3      42  verde
4      34   rojo

Ahora, si se desea crear un modelo de regresión lineal para obtener el precio del producto no se puede usar el color directamente. Al ser una variable categórica no se puede multiplicar por un parámetro para predecir un valor. Pero sí que es posible si el dato se representa como variables dummies que representa si el registro es de un color u otro.

La función get_dummies() de Pandas

Pandas dispone de la función get_dummies() con la cual se puede crear de un forma sencilla variables dummies a partir de un DataFrame. El uso básico de esta función solamente requiere llamarla con un conjunto de datos como parámetro, obteniendo como resultado un DataFrame con los datos transformados. Lo que se puede hacer con el conjunto de datos de ejemplo.

dummies = pd.get_dummies(data)
dummies
   precio  color_azul  color_rojo  color_verde
0      45           0           1            0
1      53           0           0            1
2      60           1           0            0
3      42           0           0            1
4      34           0           1            0

Como se puede ver en los resultados se crea un nuevo conjunto de datos con tres variables en que comienzan por el nombre de la variable anterior, seguido de guión bajo y el nombre de la categoría. Así en este ejemplo se tienen tres variables, una para cada uno de los colores. Además, no es necesario indicar las variables que son categóricas, ya que el algoritmo las detecta automáticamente, dejando las numéricas intactas.

Eliminación de la primera categoría con drop_first

Los conjuntos de datos con colinealidad suelen dar problemas en la mayoría de algoritmos de aprendizaje automático. Por construcción, las variables dummies son colineales. Algo que se puede comprobar fácilmente, cualquier de las nuevas variables se puede predecir a partir del resto ya que es 1 cuando el resto es 0 y 0 cuando hay un 1 en cualquier otra variable. Para solucionar este problema se puede eliminar una variable o asignar el valor verdadero a la propiedad drop_first haciendo que la función elimine la variable de la primera categoría. Lo que se puede comprobar con el siguiente ejemplo.

dummies_drop = pd.get_dummies(data, drop_first=True)
dummies_drop
   precio  color_rojo  color_verde
0      45           1            0
1      53           0            1
2      60           0            0
3      42           0            1
4      34           1            0

Lo que elimina la columna del color azul.

Recupera los valores originales

En la versión 1.5 de Pandas se introdujo la función from_dummies() con la que se puede recuperar la variable original a partir de las dummies. Este método requiere las columnas para crear un nuevo DataFrame.

pd.from_dummies(dummies[['color_azul', 'color_rojo', 'color_verde']])
              
0   color_rojo
1  color_verde
2   color_azul
3  color_verde
4   color_rojo

Por defecto se obtiene una serie con el nombre de la variable, pero se le puede indicar la propiedad sep para indicar el carácter usado para separar el nombre de la variable de las categorías, para obtener así la variable original.

pd.from_dummies(dummies[['color_azul', 'color_rojo', 'color_verde']], sep='_')
   color
0   rojo
1  verde
2   azul
3  verde
4   rojo

En el caso de que se eliminase una de las categorías también se puede recuperar los datos originales. Solamente se le debe indicar a la función el valor de la categoría por defecto mediante el uso de la propiedad default_category.

pd.from_dummies(dummies[['color_rojo', 'color_verde']], sep='_', default_category='azul')
   color
0   rojo
1  verde
2   azul
3  verde
4   rojo

Conclusiones

Las funciones get_dummies() y from_dummies() de Pandas permite trabajar de una forma rápida y eficiente con variables dummies o variables binarias. Así, en una sola línea se pueden preparar los datos categóricos para poder ser utilizados en cualquier modelo de aprendizaje automático.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Pandas

Recent Posts

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

4 horas ago

Lanzamiento de la versión 1.0 del laboratorio de Analytics Lane con nuevas herramientas de scoring

En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…

3 días ago

¡Analytics Lane cumple ocho años!

Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…

3 días ago

Analytics Lane lanza una Calculadora de Rentabilidad con Flujos Irregulares basada en TIR (XIRR)

La nueva herramienta permite calcular la rentabilidad real de inversiones con múltiples aportaciones, retiradas y…

4 días ago

Analytics Lane lanza un Conversor CSV ↔ JSON para transformar datos en tiempo real

Analytics Lane continúa ampliando su laboratorio de utilidades para desarrolladores y analistas de datos con…

4 días ago

Analytics Lane lanza un nuevo Formateador y Tester de Expresiones Regulares para desarrolladores

Analytics Lane continúa ampliando su laboratorio de herramientas para desarrolladores con el lanzamiento del Formateador…

5 días ago

This website uses cookies.