python
January 27, 2023

Простой и удобный счетчик на Python

Рассмотрим удобный инструмент быстрого подсчета статистики встречаемости объектов в наборе данных, не требующий использование специализированных научных библиотек. Это класс Counter из модуля collections:

from collections import Counter

cnt = Counter()

Техника работы с ним заключается в добавлении наборов данных, после чего сразу становится доступна статистика:

w1 = ['бананы', 'яблоки', 'виноград']
cnt.update(w1)
cnt
w2 = ['арбузы', 'виноград']
cnt.update(w2)
cnt

Очистить экземпляр класса от содержимого можно его методом clear:

cnt.clear()
cnt

В качестве источников данных в Counter-е могут выступать не только списки, но и словари, и другие счетчики:

w1 = {'бананы':2, 'яблоки':3, 'виноград':1}
w2 = {'арбузы':2, 'виноград':3}

for it in [w1, w2]:
    cnt.update(it)
cnt
cnt.clear()

w1 = {'бананы':2, 'яблоки':3, 'виноград':1}
cnt1 = Counter()
cnt1.update(w1)

w2 = {'арбузы':2, 'виноград':3}
cnt2 = Counter()
cnt2.update(w2)

for it in [cnt1, cnt2]:
    cnt.update(it)
cnt

Ключевой опцией объекта Counter является вывод n самых частых элементов, который осуществляется методом most_common:

cnt.most_common(2)

Без аргументов данный метод возвращает все элементы и их счетчики в виде списка кортежей. Например, выведем все элементы со счетчиком больше 2:

[it for it, c in cnt.most_common() if c>2]

Для подсчета количества уникальных элементов используйте функцию len:

len(cnt)

Получить сумму элементов можно функцией sum, вызванной на значениях статистики элементов (cnt.values):

display(cnt.values())

sum(cnt.values())