En cualquier conjunto de datos aparecen valores que se alejan mucho del resto. A veces son errores de medición, a veces son casos especiales extremadamente relevantes. Saber detectarlos y decidir qué hacer con ellos es una habilidad esencial en análisis de datos.
¿Qué es un outlier?
Un outlier (valor atípico) es un dato que se aleja significativamente de la distribución del resto. Por ejemplo, en una lista de salarios donde la mayoría está entre 2.000 y 5.000, un valor de 200.000 es un outlier.
No siempre son errores — pueden ser:
- Errores de registro o digitación
- Casos legítimamente extremos (un CEO en una encuesta de salarios)
- Fraudes o comportamientos anómalos
- Descubrimientos importantes
Cómo detectar outliers
Método 1: visualización con boxplot
El boxplot es la herramienta visual más directa para detectar outliers:
import pandas as pd
import matplotlib.pyplot as plt
salarios = [2200, 2500, 2800, 3000, 2600, 2400, 2900, 2700, 50000, 2300]
pd.Series(salarios).plot(kind='box')
plt.show()
Los puntos fuera de los "bigotes" del boxplot son candidatos a outliers.
Método 2: IQR (rango intercuartílico)
El método más común en estadística:
import numpy as np
datos = pd.Series([2200, 2500, 2800, 3000, 2600, 2400, 2900, 2700, 50000, 2300])
Q1 = datos.quantile(0.25)
Q3 = datos.quantile(0.75)
IQR = Q3 - Q1
limite_inferior = Q1 - 1.5 * IQR
limite_superior = Q3 + 1.5 * IQR
outliers = datos[(datos < limite_inferior) | (datos > limite_superior)]
print(outliers) # 50000
Método 3: z-score
Mide cuántas desviaciones estándar se aleja cada valor de la media. Valores con z-score mayor a 3 (en valor absoluto) suelen considerarse outliers:
from scipy import stats
z_scores = stats.zscore(datos)
outliers = datos[abs(z_scores) > 3]
¿Qué hacer con los outliers?
No existe una respuesta única. Depende del contexto:
| Situación | Acción recomendada |
|---|---|
| Error de digitación claro (edad = 999) | Corregir o eliminar |
| Valor legítimo pero extremo (CEO en encuesta) | Mantener y documentar |
| Afecta el análisis pero es real | Analizar con y sin el outlier |
| Detección de fraude | El outlier ES el hallazgo |
Ejemplo: el impacto en la media
sin_outlier = [2200, 2500, 2800, 3000, 2600, 2400, 2900, 2700, 2300]
con_outlier = sin_outlier + [50000]
print(f"Media sin outlier: {sum(sin_outlier)/len(sin_outlier):.0f}") # 2600
print(f"Media con outlier: {sum(con_outlier)/len(con_outlier):.0f}") # 7140
print(f"Mediana con outlier: {sorted(con_outlier)[len(con_outlier)//2]}") # 2600
La mediana no se ve afectada. Por eso, cuando hay outliers, la mediana es más representativa que la media.
Errores frecuentes
Eliminar outliers automáticamente: primero investiga si son errores reales. Un outlier puede ser el hallazgo más importante de tu análisis.
No documentar las decisiones: si decides eliminar o transformar un outlier, documenta por qué. Otro analista debe poder reproducir y entender tu proceso.
Ignorarlos porque "no parecen importantes": los outliers en datos financieros pueden indicar fraude. Los outliers en datos de salud pueden ser casos críticos.
Aprende haciendo, no solo leyendo
Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de SQL y recibes corrección inmediata de IA.
Comenzar gratis →