Cómo Realizar One-Hot Encoding en Power BI.
Guía paso a paso con Power Query. Sin R, sin Python, sin extensiones.
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 |
- Compatible con DAX y visuales nativos.
- Ideal para AutoML y modelos predictivos.
- Evita sesgos numéricos del Label Encoding.
Paso a Paso en Power Query
Agrega Columna Índice
Ve a Agregar columna > Columna de índice > Desde 0.
Fuente: Microsoft Learn
Crea Columna "Dummy" = 1
Agregar columna > Columna personalizada → Nombre: Dummy, Fórmula: 1
Pivotea la Columna Categórica
Selecciona "Mes" → Transformar > Pivoteo de columna → Valores: Dummy, Agregación: Suma
Fuente: Microsoft Docs
Reemplaza null por 0
Selecciona todas las nuevas columnas → Clic derecho > Reemplazar valores → null → 0
Limpieza Final
Cambia tipo a Entero, elimina columnas innecesarias → Cerrar y aplicar.
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 para cada variable categórica.
- Muchas categorías (>50) → considera Label Encoding para evitar explosión dimensional.
- Uso en DAX:
Regresión = LINEST(Ventas, [Ene], [Feb], ...) - Error común: duplicados → usa "No agregar" en pivoteo si no quieres sumar.