Cómo Realizar One-Hot Encoding en Power BI: Guía Paso a Paso para Principiantes y Expertos
Fuente: aiplusinfo.com
¡Hola, comunidad de análisis de datos en Power BI! Hoy te traigo un tutorial completo para implementar One-Hot Encoding directamente en Power Query.
Si estás preparando datos para modelos de machine learning, regresiones lineales o simplemente quieres variables dummy para análisis avanzados, este método es rápido, nativo y escalable. ¡No necesitas R, Python ni extensiones!
¿Qué es el One-Hot Encoding?
El One-Hot Encoding convierte variables categóricas (como "Rojo", "Azul", "Verde") en columnas binarias (0 o 1).
| Categoría | Rojo | Azul | Verde |
|---|---|---|---|
| Rojo | 1 | 0 | 0 |
| Azul | 0 | 1 | 0 |
| Verde | 0 | 0 | 1 |
Ventajas en Power BI:
- Compatible con DAX y visuales.
- Ideal para AutoML.
- Evita sesgos numéricos.
Paso a Paso en Power Query
Paso 1: Agrega Columna Índice
Ve a Agregar columna > Columna de índice > Desde 0.
Fuente: Microsoft Learn
Paso 2: Crea Columna "Dummy" = 1
Agregar columna > Columna personalizada → Nombre: Dummy, Fórmula: 1
Paso 3: Pivotea la Columna Categórica
Selecciona "Mes" → Transformar > Pivoteo de columna → Valores: Dummy, Agregación: Suma
Fuente: Microsoft Docs
Paso 4: Reemplaza null por 0
Selecciona todas las nuevas columnas → Clic derecho > Reemplazar valores → null → 0
Paso 5: Limpieza Final
Cambia tipo a Entero, elimina columnas innecesarias → Cerrar y aplicar.
¡One-Hot Encoding listo en 5 minutos!
Código M para Editor Avanzado
let
Fuente = TuTablaAnterior,
#"Columna índice" = Table.AddIndexColumn(Fuente, "Índice", 0, 1),
#"Columna Dummy" = Table.AddColumn(#"Columna índice", "Dummy", each 1),
#"Pivoteada" = Table.Pivot(#"Columna Dummy", List.Distinct(#"Columna Dummy"[Mes]), "Mes", "Dummy", List.Sum),
#"Reemplazar null" = Table.ReplaceValue(#"Pivoteada", null, 0, Replacer.ReplaceValue, Table.ColumnNames(#"Pivoteada"))
in
#"Reemplazar null"
Tip: Cambia [Mes] por tu columna categórica.
Consejos Pro
- Múltiples columnas → repite el proceso.
- Muchas categorías (>50) → considera Label Encoding.
- Uso en DAX:
Regresión = LINEST(Ventas, [Ene], [Feb], ...) - Error común: duplicados → usa "No agregar" en pivoteo.