Media, Mediana y Moda en Python
Aprende a calcular la media, mediana y moda en Python con numpy y statistics. Ejemplos reales, cuándo usar cada una y cómo manejar valores faltantes.
La media, la mediana y la moda son las tres medidas de tendencia central fundamentales en estadística. Cada una describe el "centro" de un conjunto de datos de una manera diferente, y saber cuál usar — y cuándo — es una de las primeras habilidades prácticas que necesitas para la preparación de datos en machine learning.
Este capítulo cubre:
- Qué significa cada medida y cómo se calcula
- Cómo calcularlas en Python con
numpyy el módulostatistics - Cuándo preferir una medida sobre otra
- Cómo usarlas para rellenar valores faltantes (imputación)
¿Qué Son la Media, la Mediana y la Moda?
Las tres medidas resumen un conjunto de datos con un único valor representativo, pero capturan distintos aspectos de la distribución:
| Medida | Definición | Mejor para |
|---|---|---|
| Media | Suma de todos los valores ÷ cantidad | Datos simétricos, distribuidos normalmente |
| Mediana | Valor central cuando los datos están ordenados | Datos sesgados o con valores atípicos |
| Moda | Valor que aparece con mayor frecuencia | Datos categóricos o recuentos discretos |
Comprender la distribución de datos te ayuda a decidir qué medida es más adecuada para tu conjunto de datos.
Media
La media (promedio aritmético) suma todos los valores y los divide entre la cantidad de valores.
Fórmula: mean = (x₁ + x₂ + … + xₙ) / n
Usa numpy.mean() para calcularla en Python:
Calcular la media de una lista usando numpy
Cuándo usar la media
La media funciona bien cuando tus datos no tienen valores atípicos extremos y siguen una distribución aproximadamente simétrica. Cuando hay valores atípicos, estos arrastran la media hacia ellos y la convierten en un representante deficiente del valor "típico".
Media vs. mediana con un valor atípico
import numpy as np
salaries = [40000, 42000, 45000, 48000, 50000, 300000]
print(f"Mean: {np.mean(salaries):.0f}") # Output: 87500
print(f"Median: {np.median(salaries):.0f}") # Output: 46500Aquí la media es 87 500 — mucho más alta que cinco de los seis salarios — porque un valor extremo (300 000) la sesga hacia arriba. La mediana (46 500) representa mejor lo que gana un empleado típico.
Mediana
La mediana es el valor central de un conjunto de datos ordenado.
- Número impar de valores: el elemento central.
- Número par de valores: el promedio de los dos elementos centrales.
Usa numpy.median():
Calcular la mediana de una lista usando numpy
Conjunto de datos con longitud par — la mediana promedia los dos valores centrales
import numpy as np
data_even = [1, 3, 5, 7]
print(np.median(data_even)) # Output: 4.0 (average of 3 and 5)Cuándo usar la mediana
La mediana es la medida de tendencia central preferida cuando tus datos están sesgados o contienen valores atípicos, porque no se ve afectada por los valores extremos. Los ingresos, los precios de viviendas y las distribuciones de edad son ejemplos clásicos donde la mediana es más informativa que la media.
Moda
La moda es el valor que aparece con mayor frecuencia en un conjunto de datos. Un conjunto de datos puede tener:
- Ninguna moda — si todos los valores aparecen el mismo número de veces.
- Una moda (unimodal) — el caso más común.
- Múltiples modas (multimodal) — dos o más valores empatan en la frecuencia más alta.
Usa statistics.mode() de la biblioteca estándar:
Calcular la moda de una lista usando el módulo statistics
Manejo de datos multimodales
statistics.mode() lanza un StatisticsError en Python 3.7 y versiones anteriores cuando hay un empate. En Python 3.8+ devuelve la primera moda encontrada. Para recuperar todas las modas de forma segura, usa statistics.multimode():
Encontrar todas las modas cuando los datos tienen múltiples picos
import statistics
votes = [1, 1, 2, 2, 3]
print(statistics.multimode(votes)) # Output: [1, 2]Moda para datos numéricos
La moda es más natural para datos categóricos o enteros discretos, pero también funciona con datos numéricos continuos:
import statistics
scores = [10, 20, 20, 30, 40]
print(statistics.mode(scores)) # Output: 20Cuándo usar la moda
Usa la moda cuando trabajes con características categóricas (colores, etiquetas, categorías de productos) o cuando necesites saber el elemento más popular — por ejemplo, el tipo de defecto más común en un conjunto de datos de control de calidad.
Comparación de las Tres Medidas
El ejemplo a continuación muestra cómo la media, la mediana y la moda divergen en un conjunto de datos sesgado. Algunos empleados de mayor edad elevan la media, mientras que la mediana y la moda se mantienen cerca de donde se concentra la mayoría de los datos:
Comparar media, mediana y moda en datos sesgados
import numpy as np
import statistics
ages = [22, 23, 24, 24, 25, 25, 25, 26, 60]
print(f"Mean: {np.mean(ages):.1f}") # Output: 28.2
print(f"Median: {np.median(ages):.1f}") # Output: 25.0
print(f"Mode: {statistics.mode(ages)}") # Output: 25La media (28.2) es arrastrada hacia arriba por el empleado de 60 años. La mediana y la moda (ambas 25) representan con precisión al empleado típico.
Usar la Media y la Mediana para Imputar Valores Faltantes
Un paso habitual de preprocesamiento antes de entrenar un modelo es reemplazar los valores faltantes (NaN) con una estadística representativa. Esto se denomina imputación.
- Imputación por media — reemplaza
NaNcon el promedio de la columna. Rápida, pero sensible a los valores atípicos. - Imputación por mediana — reemplaza
NaNcon la mediana. Robusta frente a valores atípicos; preferida para características sesgadas. - Imputación por moda — reemplaza
NaNcon el valor más frecuente. Adecuada para columnas categóricas.
Imputación por media con numpy
import numpy as np
data = [10.0, 20.0, float('nan'), 40.0, 50.0]
mean_val = np.nanmean(data) # ignores NaN: (10+20+40+50)/4 = 30.0
imputed = [mean_val if np.isnan(x) else x for x in data]
print(imputed)
# Output: [10.0, 20.0, 30.0, 40.0, 50.0]En código de producción normalmente usarías sklearn.impute.SimpleImputer, que se integra limpiamente en los pipelines de scikit-learn y aplica las mismas estadísticas ajustadas tanto al conjunto de entrenamiento como al de prueba.
Referencia Rápida: Qué Medida Elegir
| Escenario | Medida recomendada |
|---|---|
| Datos numéricos distribuidos normalmente | Media |
| Datos numéricos sesgados (ingresos, precios) | Mediana |
| Datos con valores atípicos extremos | Mediana |
| Datos categóricos (etiquetas, colores) | Moda |
| Imputar columnas numéricas con valores atípicos | Mediana |
| Imputar columnas categóricas | Moda |
| Encontrar el valor más popular | Moda |
Temas Relacionados
- Distribución de Datos — comprende las distribuciones normal, sesgada y uniforme antes de elegir una medida.
- Desviación Estándar — mide qué tan dispersos están tus datos alrededor de la media.
- Percentil — clasifica los valores en relación con el resto del conjunto de datos.
- Escala — técnicas de escalado de características que se basan en estas estadísticas.
Conclusión
La media, la mediana y la moda capturan cada una un aspecto diferente del centro de tus datos. La media es la opción predeterminada más común, pero es frágil en presencia de valores atípicos. La mediana es robusta y debe ser tu primera elección para distribuciones sesgadas. La moda es indispensable para datos categóricos y para consultas rápidas de "valor más común". En machine learning, las tres aparecen regularmente en el análisis exploratorio de datos y en la imputación de valores faltantes — elegir la correcta para cada columna conduce a características más limpias y a un mejor rendimiento del modelo.