Counter

 Counter es una herramienta que cuenta cosas automáticamente. Es como un contador que te dice cuántas veces aparece cada elemento en una lista.

python
from collections import Counter

# Contar letras en una palabra
palabra = "abracadabra"
contador = Counter(palabra)

print(contador)
# Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})

Uso básico con listas

python
from collections import Counter

# Lista de frutas
frutas = ['manzana', 'naranja', 'manzana', 'plátano', 'naranja', 'manzana']
contador_frutas = Counter(frutas)

print(contador_frutas)
# Counter({'manzana': 3, 'naranja': 2, 'plátano': 1})

Métodos más útiles

1. most_common() - Los más frecuentes

python
texto = "hola mundo hola python hola programación"
palabras = texto.split()
contador = Counter(palabras)

print(contador.most_common(2))
# [('hola', 3), ('mundo', 1)] - Las 2 más comunes

print(contador.most_common())
# [('hola', 3), ('mundo', 1), ('python', 1), ('programación', 1)] - Todas ordenadas

2. Acceder a conteos específicos

python
contador = Counter(['a', 'b', 'a', 'c', 'b', 'a'])

print(contador['a'])  # 3
print(contador['b'])  # 2
print(contador['z'])  # 0 (no da error)

3. Actualizar contadores

python
contador = Counter(['a', 'b', 'a'])

# Agregar más elementos
contador.update(['a', 'c', 'b', 'a'])
print(contador)  # Counter({'a': 4, 'b': 2, 'c': 1})

# También funciona con strings
contador.update("aabbcc")
print(contador)  # Counter({'a': 6, 'b': 4, 'c': 3})

Operaciones matemáticas

python
contador1 = Counter(['a', 'b', 'a', 'c'])
contador2 = Counter(['a', 'b', 'b', 'd'])

# Sumar
print(contador1 + contador2)
# Counter({'a': 3, 'b': 3, 'c': 1, 'd': 1})

# Restar
print(contador1 - contador2)
# Counter({'a': 1, 'c': 1})

# Intersección (mínimos)
print(contador1 & contador2)
# Counter({'a': 1, 'b': 1})

# Unión (máximos)
print(contador1 | contador2)
# Counter({'a': 2, 'b': 2, 'c': 1, 'd': 1})

Ejemplos prácticos

Contar palabras en un texto

python
texto = "el gato corre tras el ratón y el perro corre tras el gato"
palabras = texto.split()
contador = Counter(palabras)

print("Palabra más común:", contador.most_common(1)[0])
# ('el', 4)

for palabra, cuenta in contador.most_common():
    print(f"'{palabra}': aparece {cuenta} veces")

Análisis de ventas

python
# Productos vendidos
ventas = ['laptop', 'mouse', 'laptop', 'teclado', 'mouse', 'laptop', 'laptop']
contador_ventas = Counter(ventas)

print("Productos vendidos:")
for producto, cantidad in contador_ventas.most_common():
    print(f"- {producto}: {cantidad} unidades")

# laptop: 4 unidades
# mouse: 2 unidades  
# teclado: 1 unidad

Contar elementos únicos

python
numeros = [1, 2, 3, 1, 2, 1, 4, 5, 1, 2]
contador = Counter(numeros)

print("Total de elementos:", sum(contador.values()))  # 10
print("Elementos únicos:", len(contador))             # 5
print("Elementos que se repiten:", list(contador.elements()))

Crear Counter de diferentes formas

python
# Desde una lista
Counter([1, 2, 1, 3, 2, 1])

# Desde un string
Counter("programación")

# Desde un diccionario
Counter({'a': 3, 'b': 2})

# Con argumentos por nombre
Counter(manzanas=5, naranjas=3, platanos=2)

Resumen

  • Counter cuenta automáticamente elementos

  • No da error si buscas un elemento que no existe (devuelve 0)

  • most_common() te da los elementos más frecuentes

  • Puedes sumar, restar y hacer operaciones entre counters

  • Es muy eficiente para contar y analizar datos

¡Es perfecto para análisis de texto, estadísticas, conteo de votos, o cualquier situación donde necesites contar cosas rápidamente!

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

Calculadora de edad

Funciones en Python: con y sin paréntesis