Appia의 IT세상

파이썬[Python] Counter 함수 - collections 모듈 / 알파벳 사용빈도 확인 본문

Python/Python 기본

파이썬[Python] Counter 함수 - collections 모듈 / 알파벳 사용빈도 확인

Appia 2020. 3. 12. 07:59
반응형

이번 포스팅은 collection 모듈에 포함되어 있는 Counter 함수에 대해서 살펴보고자 합니다. 실제, 저의 블로그의 유입 하신 분들중에 [파이썬 알파벳 갯수]로 검색해서 들어오신 분이 있었던 것 같습니다. 불행히도, 그 분께서 원하시는 답을 찾아가셨는지 정확하지 않습니다. 그래서 아마도, 이와 같이 검색하면 저의 블로그가 나오고 그래서 향후에 동일하게 검색해서 들어오시는 분들을 위해서 이 포스팅을 할려고 합니다. 

 

그리고 이참에 또한 각 모듈들에 대해서 간단히 이야기를 해보고자 하는 생각도 가지고 있습니다. ( collection 모듈을 시작으로 시작해볼까 합니다.) 

 

Counter의 함수는 컨테이너등에 동일한 자료가 몇 개인지 확인하는 데 사용하는 객체입니다. 그럼 간단하게 예를 들어보겠습니다. 

 

from collections import Counter
 
list = ['Hello''HI''How''When''Where''Hello']
 
print(Counter(list))
cs

위의 결과를 실행하면 다음과 같은 형태로 나옵니다. 

Counter({'Hello'2'HI'1'How'1'When'1'Where'1})
cs

보이시는 바와 같이 딕셔너리 형태로 출력이 됩니다. 선언된 리스트를 Counter() 인자로 넣었더니, 위와 같이 사용빈도에 대해서 딕셔너리에 대해서 

 

알파벳 사용빈도 확인 (문자열 사용) 

그럼 위에서 든 예제를 조금 다르게 활용하여 알파벳이 얼마나 사용되었는지 확인해보도록 하겠습니다. 그럼 먼저 다음과 같은 예제를 한번 살펴보겠습니다. 

from collections import Counter
 
value = "Hello Appia"
 
print(Counter(value))
cs

위의 예제를 실행하면 다음과 같은 결과가 나옵니다. 

Counter({'l'2'p'2'H'1'e'1'o'1' '1'A'1'i'1'a'1})
cs

즉, 문자열을 입력하면 사용된 알파벳 수에 대해서 확인이 가능합니다. 위의 코드를 조금 수정해서 보기 편하게 해보도록 하겠습니다. 

 

from collections import Counter
 
value = "Hello Appia"
 
countValue = Counter(value)
 
for key,value in countValue.items():
 
    print(key,':',value)
cs

 

Counter클래스의 반환값이 딕셔너리 형태이기 때문에 루프 형태를 돌릴 수 있습니다. 그럼 다음과 같은 결과가 나옵니다. 

H : 1
 
e : 1
 
l : 2
 
o : 1
 
  : 1
 
A : 1
 
p : 2
 
i : 1
 
a : 1
cs

 

그럼 Counter를 이용해서 값을 입력도 가능합니다. 다음 예제를 한번 살펴보겠습니다. 

from collections import Counter
 
countValue = Counter(A=1,B=2,C=3)
 
print(countValue)
 
print(sorted(countValue.elements()))
cs

A = 1, B = 2, C = 3를 통해 값을 생성할 수도 있습니다. 그럼 결과를 한번 살펴보도록 하겠습니다. 

Counter({'C'3'B'2'A'1})
 
['A''B''B''C''C''C']
cs

위와 같이 생성도 가능합니다.

 

Counter의 내부 메소드

그럼 이제는 Counter의 포함되어 있는 내부 함수/ 즉 메소드들에 대해서 한번 살펴보고자 합니다. 

 

most_common()

Counter()에서 가장 빈도수가 높은 순으로 표시해 주는 하수 입니다. 단, 인자값으로 숫자를 입력하시면 그 숫자번째까지의 빈도수를 표시해줍니다. 

from collections import Counter
 
value = "Hello Appia"
 
countValue = Counter(value)
 
print(countValue.most_common())
 
print(countValue.most_common(2))
cs

위의 예제를 바탕으로 하면 다음과 같은 결과가 나옵니다. 

[('l'2), ('p'2), ('H'1), ('e'1), ('o'1), (' '1), ('A'1), ('i'1), ('a'1)]
 
[('l'2), ('p'2)]
cs

 

element()

실제 이 부분은 Counter()생성된 딕셔너리를 각 맴버들로 만들어 반환하는 것입니다. 그럼 다음 예제를 한번 살펴보도록 하겠습니다. 

from collections import Counter
 
value = "Hello Appia"
 
countValue = Counter(value)
 
print(list(countValue.elements()))
cs

위의 예제를 실행하면 다음과 같은 결과가 나옵니다. 

['A''A''A''C''C''D']
cs

예전에는 무작위로 출력이 되었지만, 몇 버전 부터인지 작동으로 Sorted()로 되서 출력하는 것 같습니다. 

 

이외에도 많은 update/sutract등이 있으나 잘 사용하지도 않고, 덧셈/뺄셈 하는 경우가 적어서 과감하게 누락해버리겠습니다. 

 

이번 포스팅에서는 collection module에서 Counter에 대해서 살펴봤습니다. 이 부분을 통해서 문자열의 알파벳 갯수를 읽어올 수 있습니다. 

 

혹 도움이 되셨다면, 공감 버튼 꾸욱 한번 부탁드립니다. 

반응형
Comments