새소식

반응형
Python/라이브러리

Python Collections의 Counter: 데이터 빈도 계산의 강력한 도구

  • -
반응형

Python의 collections 모듈에 있는 Counter 클래스에 대해 알아보겠습니다.

python

Counter는 데이터의 빈도를 계산하는 데 특화된 도구로, 코드를 간결하게 만들고 성능을 향상시키는 데 큰 도움이 됩니다.

Counter 소개

Counter는 해시 가능한 객체를 세는 데 사용되는 딕셔너리의 하위 클래스입니다. 요소가 딕셔너리 키로 저장되고, 그 개수가 딕셔너리 값으로 저장됩니다.

기본 사용법

from collections import Counter

# 리스트에서 요소 개수 세기
fruits = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']
fruit_counter = Counter(fruits)
print(fruit_counter)  # Counter({'apple': 3, 'banana': 2, 'cherry': 1})

Counter의 유용한 메서드

  1. most_common([n]): 가장 흔한 n개의 요소와 그 개수를 반환합니다.
  2. elements(): 요소들을 반복할 수 있는 이터레이터를 반환합니다.
  3. update([iterable-or-mapping]): 다른 이터러블이나 매핑으로부터 개수를 갱신합니다.
  4. subtract([iterable-or-mapping]): 다른 이터러블이나 매핑으로부터 개수를 뺍니다.

실제 사용 예: 해시태그 빈도 계산

해시태그의 빈도를 계산하는 작업을 예로 들어보겠습니다.

기존 방식:

hashtagRanks = {}
for hashtag in hashtags:
    if hashtag in hashtagRanks:
        hashtagRanks[hashtag] += 1
    else:
        hashtagRanks[hashtag] = 1

Counter 사용:

from collections import Counter

hashtagRanks = Counter(hashtags)
반응형

Counter의 장점

  1. 간결성: 복잡한 로직을 한 줄로 표현할 수 있습니다.
  2. 효율성: 내부적으로 최적화되어 있어 대량의 데이터 처리에 효과적입니다.
  3. 다양한 연산 지원: 덧셈, 뺄셈, 교집합, 합집합 등 다양한 집합 연산을 지원합니다.
  4. 가독성: 코드의 의도를 명확하게 표현합니다.

고급 사용 예제

# 두 Counter 객체 더하기
c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
print(c + d)  # Counter({'a': 4, 'b': 3})

# 가장 흔한 요소 찾기
print(Counter('abracadabra').most_common(3))  # [('a', 5), ('b', 2), ('r', 2)]

# 요소 나열하기
c = Counter(a=4, b=2, c=0, d=-2)
print(list(c.elements()))  # ['a', 'a', 'a', 'a', 'b', 'b']

결론

Python의 Counter 클래스는 데이터 빈도 계산 작업을 크게 단순화합니다. 특히 대량의 데이터를 다룰 때 그 유용성이 돋보입니다. 텍스트 분석, 로그 처리, 데이터 시각화 전 데이터 정리 등 다양한 분야에서 활용될 수 있습니다.

Counter를 적극 활용하여 더 pythonic하고 효율적인 코드를 작성해보세요. 복잡한 빈도 계산 로직을 단순화하고, 코드의 가독성과 성능을 동시에 개선할 수 있습니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.