개요
평소 어떤 리스트 내 원소가 나타난 수를 셀 때 다음과 같은 방식으로 셌었는데, Python의 Counter 클래스를 사용하면 편하게 데이터의 수를 셀 수 있다고 한다.
tangerine = [1, 3, 2, 5, 4, 5, 2, 3]
for i in tangerine:
if i not in t_group:
t_group[i] = 0
t_group[i] += 1
사용방법을 정리해 둔다.
Counter 란
사용하고자 하는 클래스는 collections 모듈의 Counter 클래스로, 해시 가능한 객체를 카운트하기 위한 딕셔너리 하위 클래스이다. 원소가 키(key)고, 원소의 개수가 값(value)인 딕셔너리로 저장된다. 값에는 0과 음수를 포함한 모든 정수가 허용된다.
임포트
추가 패키지 설치 없이 바로 임포트 하여 사용할 수 있다.
from collections import Counter
사용
간단하게 개수를 세고 싶은 데이터를 생성자에 전달하여 사용할 수 있다.
from collections import Counter
tangerine = [1, 3, 2, 5, 4, 5, 2, 3]
cnt_tangerine = Counter(tangerine)
Counter는 Dictionary의 하위 클래스이기 때문에 일반 Dictrionary를 다루듯이 사용할 수 있다.
print(cnt_tangerine[3])
가장 많은 데이터 찾기
어떤 데이터들 중, 가장 많이 발생한 데이터나 가장 적게 발생할 데이터를 찾을 때는 Counter 클래스의 most_common 함수를 활용할 수 있다. most_common은 데이터의 개수가 많은 순으로 정렬된 배열을 반환한다.
from collections import Counter
tangerine = [1, 3, 2, 5, 4, 5, 2, 3]
cnt_tangerine = Counter(tangerine)
print(cnt_tangerine.most_common())
기본적으로는 모든 데이터를 대상으로 정렬된 배열을 반환하고, 매개변수로 숫자 n을 넘기면 가장 개수가 많은 n개 데이터를 얻을 수 있다.
참고 문서
https://docs.python.org/ko/3/library/collections.html#collections.Counter
https://www.daleseo.com/python-collections-counter/