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
- Reúne los datos en una lista. Pueden ser números o textos.
- Pregúntate si puede haber empate. Si sí, usa
multimode; si solo quieres un valor,mode. - Si además necesitas cuántas veces aparece cada valor, usa
Counter. - Si la lista puede llegar vacía, revisa antes:
modelanza error ymultimodedevuelve[].
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
- Datos categóricos. El color más vendido o la respuesta más elegida no tienen promedio ni mediana; solo moda.
- Valores discretos que se repiten. Talla de calzado, número de hijos, calificación entera.
- Datos continuos. Con mediciones como 1.734 m o 72.18 kg casi nunca se repite un valor exacto, y
multimodedevuelve todos los datos. Agrúpalos primero en intervalos (por ejemplo, conround()o conpd.cut) y busca el intervalo modal.
Errores comunes
StatisticsError: no mode for empty data. La lista está vacía.multimode([])devuelve[]sin error.- Usar código anterior a Python 3.8. En versiones viejas,
modelanzabaStatisticsError: no unique modecon empates. Si mantienes código antiguo con untrypara ese caso, ya no se ejecuta. TypeError: unhashable type: 'list'. Los datos contienen listas o diccionarios. Conviértelos a tuplas o a texto.- Tomar
scipy.stats.modecomo equivalente. SciPy devuelve un objeto con la moda y su conteo, y con empates elige el valor más pequeño, no el primero.
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
- 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.
- Python Software Foundation, collections.Counter. most_common. Consultado el 11 de noviembre de 2026.