일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 주식분석
- Sort
- Java
- 선형대수
- python
- RNN
- LSTM
- effective python
- 하둡2
- collections
- tensorflow
- C
- scrapy
- C언어
- 하이브
- HelloWorld
- 코딩더매트릭스
- 파이썬
- 딥러닝
- hive
- hadoop2
- 그래프이론
- NumPy
- yarn
- 알고리즘
- codingthematrix
- GRU
- graph
- 텐서플로
- recursion
- Today
- Total
EXCELSIOR
collections 모듈 - Counter 본문
collections.Counter()
컨테이너에 동일한 값의 자료가 몇개인지를 파악하는데 사용하는 객체이다.
docs.python.org에서 Counter함수에 대해 자세히 알아볼 수 있다.
A Counter is a dict subclass for counting hashable objects. It is an unordered collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts. The Counter class is similar to bags or multisets in other languages.
collections.Counter()
의 결과값(return)은 딕셔너리 형태로 출력된다.
아래의 예제 소스코드들을 통해 collections.Counter()
에 대해 살펴보도록 하자.
1. Counter()의 다양한 입력값들
1) 리스트(List)
lst = ['aa', 'cc', 'dd', 'aa', 'bb', 'ee']
의 요소 개수를 collections.Counter()
를 이용하여 구할 수 있다. 출력 결과는 Dictionary
형태로 반환하여 준다.
2) 딕셔너리(Dictionary)
또한, collections.Counter()
는 아래의 예제(2)에서 볼 수 있듯이 요소의 갯수가 많은 것 부터 출력해준다.
입력값은 Dictionary
형태로 넣어주면, 결과값 또한 Dictionary
이다.
3) 값 = 개수 형태
collections.Counter()
에는 값=개수
형태로 입력이 가능하다.
예를들어, collections.Counter(a=2, b=3, c=2)
는 ['a', 'a', 'b', 'b', 'b', 'c', 'c']
와 같다.
아래의 예제(3)의 출력값을 통해 확인할 수 있다.
4) 문자열(String)
예제(4)에서 볼 수 있듯이, 문자열을 입력했을 경우 {문자 : 개수}
의 딕셔너리 형태로 반환해 준다.
2. Counter의 메소드(method)들
1) update()
Elements are counted from an iterable or added-in from another mapping (or counter). Like dict.update() but adds counts instead of replacing them. Also, the iterable is expected to be a sequence of elements, not a sequence of (key, value) pairs.
update()
는 Counter의 값을 갱신하는 것을 의미한다. 딕셔너리의 update와 비슷하지만 입력값을 문자열 형태로도 입력 가능하다. 예제(5)는 입력값을 문자열로 했을때와 딕셔너리 형태로 입력했을 떄의 예제이다.
2) elements()
Return an iterator over elements repeating each as many times as its count. Elements are returned in arbitrary order. If an element’s count is less than one, elements() will ignore it.
입력된 값의 요소에 해당하는 값을 풀어서 반환한다. 요소는 무작위로 반환하며, 요소 수가 1보다 작을 경우 elements
는 이를 출력하지 않는다. 예제(5)는 "Hello Python"의 문자열을 elements()를 사용하여 출력한 결과이다. elements()
는 대소문자를 구분하며, sorted()
를 이용하여 정렬해줄 수 있다.
3) most_common(n)
Return a list of the n most common elements and their counts from the most common to the least. If n is omitted or
None
,most_common()
returns all elements in the counter. Elements with equal counts are ordered arbitrarily
most_common
은 입력된 값의 요소들 중 빈도수(frequency)가 높은 순으로 상위
4) subtract()
Elements are subtracted from an iterable or from another mapping (or counter). Like dict.update() but subtracts counts instead of replacing them. Both inputs and outputs may be zero or negative.
subtract()
는 말 그대로 요소를 빼는것을 의미한다. 다만, 요소가 없는 경우는 음수의 값이 출력된다. 예제(7)에서 문자열 'hello python' 에서 'i love python' 을 subtract()
를 이용해서 빼주게 되면 'hello python'에 존재하지 않는 'i, v'는 음수가 나타나게 된다.
3. Counter를 이용한 연산
collections.Counter()
는 산술/집합 연산이 가능하다.
1) 덧셈(+)
2) 뺄셈(-)
Counter의 뺄셈은 음수값은 출력하지 않는다.
3) 교집합(&) 과 합집합(|)
Counter의 교집합 및 합집합의 출력값은 {값 : 개수}
의 딕셔너리 형태로 반환된다.
'Python > 자료구조' 카테고리의 다른 글
내장함수 zip() 과 itertools.zip_longest() 함수 (0) | 2017.09.21 |
---|---|
collections 모듈 - OrderedDict (0) | 2017.09.07 |
collections 모듈 - namedtuple (5) | 2017.08.22 |
collections 모듈 - deque (3) | 2017.08.20 |
collections 모듈 - defaultdict (0) | 2017.08.18 |