Cómo calcular la moda en Python

Por el equipo de promedio.net · Actualizado el

Para calcular la moda en Python, usa statistics.mode(datos), que devuelve el valor que más se repite. Si puede haber empate, usa statistics.multimode(datos), que devuelve una lista con todas las modas. A diferencia del promedio, la moda también funciona con textos: colores, marcas o respuestas de una encuesta.

Sintaxis

import statistics as st

st.mode(datos)        # un valor; con empate, el primero que aparece
st.multimode(datos)   # lista con todos los valores empatados

from collections import Counter
Counter(datos).most_common(k)   # los k valores más frecuentes con su conteo

En pandas, serie.mode() devuelve una Serie con todas las modas ordenadas.

Paso a paso

  1. Reúne los datos en una lista. Pueden ser números o textos.
  2. Pregúntate si puede haber empate. Si sí, usa multimode; si solo quieres un valor, mode.
  3. Si además necesitas cuántas veces aparece cada valor, usa Counter.
  4. Si la lista puede llegar vacía, revisa antes: mode lanza error y multimode devuelve [].

Ejemplos resueltos

Ejemplo 1: moda simple y empate

import statistics as st

print(st.mode([3, 1, 3, 2, 1, 3]))
print(st.mode([1, 1, 2, 2]))
print(st.multimode([1, 1, 2, 2, 3]))
3
1
[1, 2]

En la primera lista, 3 aparece tres veces y es la moda. En la segunda, 1 y 2 aparecen dos veces cada uno: desde Python 3.8, mode no lanza error con empates y devuelve el primero que encuentra, 1. Eso puede ocultar que los datos son bimodales; multimode lo deja a la vista.

Ejemplo 2: respuestas de texto en una encuesta

print(st.mode(["rojo", "azul", "rojo", "verde"]))
print(st.multimode("abracadabra"))
rojo
['a']

mode acepta cualquier valor que se pueda usar como clave de diccionario. Una cadena se recorre letra por letra, así que multimode("abracadabra") cuenta letras: la «a» aparece 5 veces. Si querías la palabra completa como un dato, ponla dentro de una lista.

Ejemplo 3: frecuencias con Counter

Para saber cuántas veces aparece cada calificación y quedarte con las dos más comunes:

from collections import Counter

c = Counter([5, 7, 7, 8, 5, 7, 9])
print(c.most_common(2))
[(7, 3), (5, 2)]

7 aparece tres veces y 5 dos veces. Counter es la opción cuando, además de la moda, quieres una tabla de frecuencias: c[8] devuelve 1 y c[6] devuelve 0 sin error.

La moda en pandas

serie.mode() devuelve siempre una Serie, aunque haya una sola moda, ordenada de menor a mayor. Para un único valor usa serie.mode()[0] o serie.mode().iloc[0]. Con df.mode() obtienes la moda de cada columna; las columnas con menos modas se rellenan con NaN. Para contar frecuencias, serie.value_counts() devuelve los valores ordenados de más a menos frecuente.

Cuándo la moda tiene sentido

Errores comunes

Para comprobar resultados sin código, la calculadora de moda indica si hay una, varias o ninguna moda. La comparación con media y mediana está en media, mediana y moda.

Fuentes

  1. Python Software Foundation, documentación del módulo statistics. statistics.mode (cambio de comportamiento en 3.8) y statistics.multimode. Consultado el 11 de noviembre de 2026.
  2. Python Software Foundation, collections.Counter. most_common. Consultado el 11 de noviembre de 2026.