El binning (discretizaciテウn) convierte un rasgo continuo en categorテュas ordenadas. Es テコtil cuando un modelo no acepta valores reales o cuando queremos crear variables como 窶徠uintil de ingreso窶・
Ancho fijo vs. frecuencia igual #
Sea (x_1, \dots, x_n) un rasgo numテゥrico. Una regla de binning divide el rango en intervalos (I_k) y sustituye cada (x_i) por la etiqueta del intervalo donde cae.
- Bins de ancho fijo (
pandas.cut) utilizan intervalos de igual longitud. - Bins de frecuencia igual (
pandas.qcut) dividen los datos ordenados para que cada intervalo contenga aproximadamente el mismo nテコmero de observaciones.
Los bins de frecuencia igual son mテ。s estables ante colas largas, mientras que los de ancho fijo conservan informaciテウn sobre la distancia.
Visualizando bins de cuantiles #
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(18)
income = rng.lognormal(mean=10, sigma=0.55, size=1_000)
quantile_edges = np.quantile(income, np.linspace(0, 1, 6))
plt.hist(income, bins=40, color="steelblue", alpha=0.85)
for edge in quantile_edges[1:-1]:
plt.axvline(edge, color="darkorange", linestyle="--", alpha=0.8)
plt.title("Contornos de bins por cuantiles (5 bins)")
plt.xlabel("Ingreso")
plt.ylabel("Cantidad")
plt.show()

Comparando qcut y cut
#
quantile_bins = pd.qcut(income, q=5)
width_bins = pd.cut(income, bins=5)
quantile_counts = pd.Series(quantile_bins).value_counts(sort=False)
width_counts = pd.Series(width_bins).value_counts(sort=False)
indices = np.arange(len(quantile_counts))
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(indices - 0.2, quantile_counts.values, width=0.4, color="seagreen", alpha=0.8, label="qcut (misma frecuencia)")
ax.bar(indices + 0.2, width_counts.values, width=0.4, color="firebrick", alpha=0.6, label="cut (ancho fijo)")
ax.set_xticks(indices)
ax.set_xticklabels([f"Bin {i}" for i in indices])
ax.set_ylabel("Nテコmero de muestras")
ax.legend()
ax.set_title("Distribuciテウn de observaciones por bin")
plt.tight_layout()
plt.show()

Con qcut cada bin recibe prテ。cticamente el mismo nテコmero de observaciones. En cambio, con cut los datos se concentran en las zonas densas, dejando a los extremos con muy pocos registros.
Consejos #
- Recorta outliers extremos antes de aplicar bins de ancho fijo; un solo valor puede expandir el rango y dejar bins vacテュos.
- Guarda los puntos de corte generados durante el entrenamiento y reutilテュzalos en producciテウn para mantener definiciones consistentes.
- En modelos basados en テ。rboles el binning suele ser innecesario, pero en modelos lineales permite capturar efectos no lineales sin agregar demasiadas variables.