collection 모듈의 Counter 클래스는 python의 dictionary를 기반으로 만들어 졌고, 컨테이너 안의 데이터를 편리하고 빠르게 개수를 세도록 지원하는 계수기 도구이다. Counter 클래스는 별도의 패키지 설치 없이 이용이 가능하다.
from collections import Counter
Counter 생성자는 여러 형태의 데이터를 인자로 받는다. 먼저 중복된 데이터가 저장된 배열을 인자로 넘기면 각 원소가 몇 번씩 나오는지가 저장된 객체를 얻게 된다.
Counter(["red", "blue", "red", "red", "yellow", "blue"])
-> Counter({'red': 3, 'blue': 2, 'yellow': 1})
Counter("hamburger")
-> Counter({'r': 2, 'h': 1, 'a': 1, 'm': 1, 'b': 1, 'u': 1, 'g': 1, 'e': 1})
덧셈 연산
a = Counter("aaaa")
b = Counter("bbba")
print(a)
print(b)
print(a + b)
-> Counter({'a': 4})
Counter({'b': 3, 'a': 1})
Counter({'a': 5, 'b': 3})
뺄셈 연산
a = Counter("aaaa")
b = Counter("bbba")
print(a)
print(b)
print(a - b)
-> Counter({'a': 4})
Counter({'b': 3, 'a': 1})
Counter({'a': 3})
교집합(&) 합집합(|) 연산
a = Counter("aaaa")
b = Counter("bbba")
print(a)
print(b)
print(a & b)
print(a | b)
-> Counter({'a': 4})
Counter({'b': 3, 'a': 1})
Counter({'a': 1})
Counter({'a': 4, 'b': 3})
a = Counter("aaaab")
"b" in a
-> True
입력된 값의 요소를 무작위로 풀어서 반환한다. 또한 요소의 총 개수가 1보다 작을 시 반환하지 않는다.
import collections ex_counter = collections.Counter("I want success") print(list(ex_counter.elements())) print(sorted(ex_counter.elements())) # 정렬 ['I', ' ', ' ', 'w', 'a', 'n', 't', 's', 's', 's', 'u', 'c', 'c', 'e'] <br/>[' ', ' ', 'I', 'a', 'c', 'c', 'e', 'n', 's', 's', 's', 't', 'u', 'w']
most_common(n)함수는 입력된 값의 요소들 중 빈도수(최빈값)을 n개 반환한다. 최빈값을 반환하므로 빈도수가 높은 순으로 상위 n개를 반환하며, 결과값은 Tuple자료형이다.
import collections ex_counter = collections.Counter(['kim', 'kim', 'park', 'choi', 'kim', 'kim', 'kim', 'choi', 'park', 'choi']) print(ex_counter.most_common()) print(ex_counter.most_common(2)) print(ex_counter.most_common(1)) [('kim', 5), ('choi', 3), ('park', 2)] [('kim', 5), ('choi', 3)] [('kim', 5)]