Cómo calcular la mediana en Python

Por el equipo de promedio.net · Actualizado el

La forma directa de calcular la mediana en Python es statistics.median(datos): ordena los valores y devuelve el central, o el promedio de los dos centrales si la cantidad es par. No hace falta ordenar la lista antes. Con arreglos de NumPy usa np.median(arr) y con pandas serie.median(), que además ignora los valores faltantes.

Sintaxis

import statistics as st

st.median(datos)       # par: promedio de los dos centrales
st.median_low(datos)   # par: el menor de los dos centrales
st.median_high(datos)  # par: el mayor de los dos centrales

import numpy as np
np.median(arreglo, axis=None)

serie.median()         # pandas, ignora NaN por omisión

Paso a paso

  1. Reúne los valores en una lista o arreglo. El orden no importa.
  2. Quita los valores faltantes (None o NaN) antes de usar statistics.median.
  3. Si la cantidad es par, decide si aceptas un valor intermedio que no está en los datos (median) o necesitas uno real (median_low o median_high).
  4. Llama a la función y, si la comparas con el promedio, calcula los dos para ver cuánto pesan los extremos.

Ejemplos resueltos

Ejemplo 1: cantidad impar y cantidad par

import statistics as st

print(st.median([7, 2, 9, 4, 5]))
print(st.median([7, 2, 9, 4]))
print(st.median_low([7, 2, 9, 4]), st.median_high([7, 2, 9, 4]))
5
5.5
4 7

Con cinco valores, ordenados quedan 2, 4, 5, 7, 9 y el central es 5. Con cuatro (2, 4, 7, 9) los centrales son 4 y 7: median devuelve su promedio, 5.5, mientras que median_low y median_high devuelven 4 y 7, que sí están en los datos. Estas dos variantes sirven cuando los datos son categorías ordenadas o tallas, donde 5.5 no tiene sentido.

Ejemplo 2: sueldos con un valor extremo

sueldos = [9500, 11200, 10800, 12500, 98000]
print(st.mean(sueldos), st.median(sueldos))
28400 11200

Un solo sueldo de 98,000 eleva el promedio a 28,400, una cifra que no describe a nadie del grupo. La mediana, 11,200, sigue en el centro de los datos. Por eso las estadísticas de ingresos suelen reportar la mediana además del promedio.

Ejemplo 3: mediana por columnas con NumPy

import numpy as np

b = np.array([[1, 2],
              [3, 4]])
print(np.median(b, axis=0))
[2. 3.]

Con axis=0 obtienes la mediana de cada columna; con axis=1, la de cada fila; sin axis, la de todos los elementos juntos.

Cuidado con los NaN

statistics.median no detecta los NaN y el resultado depende de dónde estén, porque NaN no se puede ordenar:

nan = float("nan")
print(st.median([3, nan, 1, 2]))
print(st.median([nan, 3, 1, 2]))
nan
1.5

Los mismos cuatro números dan dos resultados distintos, y ninguno es fiable. Filtra antes con [x for x in datos if x == x] (un NaN nunca es igual a sí mismo) o usa np.nanmedian, o serie.median() en pandas, que los omite. np.median sin el prefijo nan devuelve nan si hay alguno. Ver más en ignorar NaN al promediar.

Errores comunes

Para comprobar a mano, la calculadora de mediana muestra los datos ordenados y cuál es el valor central. Si quieres la teoría, la página de media, mediana y moda explica cuándo conviene cada una.

Fuentes

  1. Python Software Foundation, documentación del módulo statistics. median, median_low, median_high, median_grouped. Consultado el 11 de noviembre de 2026.
  2. NumPy, numpy.median. Parámetro axis y comportamiento con NaN. Consultado el 11 de noviembre de 2026.