Discretizar Datos Numéricos y Contraer Categorías

En ciencia de datos, no siempre trabajamos con variables limpias o perfectamente preparadas. A menudo necesitamos transformarlas para extraer patrones, visualizar mejor o alimentar modelos de aprendizaje automático. En este artículo aprenderás dos técnicas fundamentales dentro del preprocesamiento y transformación de datos:

  • Agrupar (discretizar) datos numéricos en categorías o intervalos.
  • Combinar (contraer) categorías en variables categóricas.

Estas operaciones son herramientas simples pero poderosas que te ayudarán a simplificar, resumir y mejorar tus análisis y visualizaciones.

¿Qué es la Agrupación (Binning) de Datos Numéricos?

La agrupación o discretización consiste en transformar una variable numérica continua (por ejemplo, la edad) en categorías o intervalos. Por ejemplo, en lugar de analizar cada edad individualmente (22, 23, 24…), podríamos clasificar a las personas en grupos como:

  • 20–29 años → Jóvenes adultos
  • 30–39 años → Adultos
  • 40–49 años → Edad media

Esta técnica se conoce como binning (de “bins”, que significa “contenedores”).
Es muy común en análisis exploratorio, estadística descriptiva y visualización.

¿Por qué agrupar datos?

Existen varias razones por las que discretizar variables puede ser útil:

  1. Simplifica los datos → Menos categorías, más fácil de interpretar.
  2. Facilita visualizaciones → Histogramas y gráficos de barras más claros.
  3. Reduce el ruido → Los pequeños cambios dejan de ser relevantes.
  4. Mejora algunos modelos → Ciertos algoritmos funcionan mejor con categorías discretas (como árboles de decisión).

En entornos como finanzas o marketing, agrupar variables continuas es habitual:

  • Rangos de ingresos (bajo, medio, alto).
  • Rangos de edad (jóvenes, adultos, mayores).
  • Niveles de gasto o frecuencia de compra.

Ejemplo: Agrupación de edades

Supongamos que tenemos los datos de los alumnos de una clase de baile:

import pandas as pd

dance_class = pd.read_csv('dance_class_data.csv')
print(dance_class.head(5))

Salida:

          Name Gender  Age    Experience
0   Chris Shelton      M   23      beginner
1  Douglas Watson      M   28  intermediate
2    Martha Gomez      F   45      beginner
3      Amos Moore      M   63      beginner
4   Valentina Sen      F   35      beginner

Queremos agrupar las edades en rangos de 10 años (20–29, 30–39, 40–49…).

Crear contenedores con pandas.cut()

bins = [20, 30, 40, 50, 60, 70]
labels = ['20s', '30s', '40s', '50s', '60s']

dance_class['AgeGroup'] = pd.cut(dance_class['Age'], bins=bins, labels=labels)

print(dance_class[['Age', 'AgeGroup']].head())

Salida:

   Age AgeGroup
0   23      20s
1   28      20s
2   45      40s
3   63      60s
4   35      30s

Otras funciones útiles

  • pd.qcut() → Agrupa en cuantiles (por ejemplo, cuartiles o deciles), ideal cuando los datos no están uniformemente distribuidos.
  • np.histogram_bin_edges() → Permite definir automáticamente los límites de los bins según los datos.

Combinar (Contraer) variables categóricas

No todas las variables son numéricas. En los conjuntos de datos reales, muchas veces encontramos variables categóricas, como el país, la profesión, el color o el tipo de producto.
A veces, estas categorías son demasiado numerosas o desbalanceadas, lo que dificulta el análisis.

Ejemplo práctico

Supón que tienes este conjunto de datos con los deportes más populares:

SportCount
Basketball500
Football400
Baseball8
Tennis7
Cricket4
Sailing3

Claramente, los dos primeros deportes dominan la muestra.
Podríamos combinar todas las demás categorías menores en una sola llamada “Others”.


En Python:

import pandas as pd

sports = pd.DataFrame({
    'Sport': ['Basketball', 'Football', 'Baseball', 'Tennis', 'Cricket', 'Sailing'],
    'Count': [500, 400, 8, 7, 4, 3]
})

# Definir umbral mínimo
threshold = 50
sports['Sport_Grouped'] = sports['Sport'].where(sports['Count'] >= threshold, 'Other')

print(sports)

Salida:

       Sport  Count  Sport_Grouped
0  Basketball    500    Basketball
1    Football    400      Football
2    Baseball      8         Other
3      Tennis      7         Other
4     Cricket      4         Other
5     Sailing      3         Other

De esta forma, las categorías menores se combinan en una sola, lo que simplifica el análisis y mejora la visualización.

¿Por qué contraer categorías?

  • Reduce el ruido visual.
  • Simplifica modelos de ML, ya que menos categorías implican menos variables dummy tras el one-hot encoding.
  • Evita el sesgo de categorías minoritarias.

En resumen

TécnicaQué haceCuándo usarlaEjemplo
Discretización (Binning)Convierte variables continuas en intervalosCuando quieres resumir o suavizar datosEdad → grupos de edad
Contracción de categoríasCombina etiquetas poco frecuentes en una solaCuando hay categorías desbalanceadasDeportes minoritarios → “Otros”

Ambas técnicas pertenecen al proceso de transformación y limpieza de datos, una etapa crucial del preprocesamiento en ciencia de datos antes de modelar o visualizar.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *