본문 바로가기

컴퓨터/python

[python] collections 모듈 - Counter

1. Counter

Counter 클래스는 컨테이너 안의 데이터를 편리하고 빠르게 개수를 세도록 지원한다.

예를 들어, 중복된 원소가 있는 배열을 인자로 넘겨주면

각 원소의 그 개수를 사전 형식으로 반환한다.

 

import collections

a= [1,1,2,2,3,3,3,3]
cnt = collections.Counter(a)
print(cnt)

# Counter({3: 4, 1: 2, 2: 2})

 

2. Counter 클래스 함수

  • elements() : 값의 요소를 풀어서 순서를 고려하지 않고 반환한다. 원소를 확인하기 위해 리스트로 감싼다.  그렇지 않으면 <itertools.chain object at 0x000001B0CE742850>을 반환한다.       
import collections

a= [1,1,2,2,3,3,3,3]
cnt = collections.Counter(a)
print(cnt.elements())
print(list(cnt.elements()))

#  <itertools.chain object at 0x000001AB808F2850>
#  [1, 1, 2, 2, 3, 3, 3, 3]

 

  • most_common(x) : 최빈값 상위 x개를 튜플 형식(최빈값, 개수)으로 반환한다. x가 없다면 모든 요소를 반환한다. 
import collections

a= [1,1,2,2,3,3,3,3]
cnt = collections.Counter(a)
print(cnt.most_common())
print(cnt.most_common(1))

#  [(3, 4), (1, 2), (2, 2)]
#  [(3, 4)]

 

  • subtract() : 값의 요소를 빼준다. = 중복되는 요소를 제거하여 원소와 그 개수를 반환한다. 만약 요소가 없을 경우 음수를 반환한다.
import collections

a= [1,1,2,2,3,3,3,3]
b=[1,2,3]
cnt = collections.Counter(a)
cnt2 = collections.Counter(b)

cnt.subtract(cnt2)
cnt2.subtract(cnt)

print(cnt)
print(cnt2)

#  Counter({3: 3, 1: 1, 2: 1})
#  Counter({1: 0, 2: 0, 3: -2})

 

 

또한 Counter는 산술 연산과 집합 연산이 가능하다. 

subtract에서는 요소가 없을 경우 음수를 출력했지만 뺄샘에서는 음수는 출력하지 않는다.

 

728x90