문제
가장 자주 발생하는 항목을 순서대로 식별해야 합니다.
해결책
카운터를 사용하여 항목을 순서대로 추적할 수 있습니다.
카운터란 무엇입니까?
"카운터"는 각 키에 대한 정수 개수를 보유하는 매핑입니다. 기존 키를 업데이트하면 키가 추가됩니다. 이 개체는 해시 가능한 개체의 인스턴스를 계산하는 데 사용되거나 다중 집합으로 사용됩니다.
"카운터"는 데이터 분석을 수행할 때 가장 친한 친구 중 하나입니다.
이 개체는 Python에 꽤 오랫동안 존재해 왔으며 많은 분들이 이 내용을 빠르게 검토하게 될 것입니다. 컬렉션에서 Counter를 가져와서 시작하겠습니다.
컬렉션 가져오기 카운터에서
기존 사전은 누락된 키가 있는 경우 키 오류를 발생시킵니다. 키를 찾을 수 없는 경우 Python의 사전은 키 오류로 응답합니다.
# 빈 사전 사전 ={}# 빈 사전에서 키 확인['mystring']# 오류 메시지----------------------- -------------------------------------------------- --KeyError Traceback (가장 최근 호출 마지막)in 34 # 빈 dict에 있는 키 확인----> 5 dict['mystring']67 # Error messageKeyError:'mystring'
이 상황에서 주요 오류 예외를 어떻게 피할 수 있습니까?
Counter는 사전의 하위 클래스이며 사전과 매우 유사한 동작을 갖지만 키 오류를 발생시키는 대신 누락된 키를 조회하면 0을 반환합니다.
# 카운터 정의 c =Counter()
# 사용할 수 없는 keyprint를 확인합니다(f"Output\n{c['mystring']}")
출력
0
c['mystring'] +=1print(f"출력\n{c}")
출력
카운터({'mystring':1})
예시
print(f"출력\n{유형(c)}")
출력
시퀀스에서 가장 자주 발생하는 항목
카운터의 다른 좋은 점 중 하나는 개체 목록을 표시할 수 있고 개체를 계산할 수 있다는 것입니다. 카운터를 구성하기 위해 루프를 구축하지 않아도 됩니다.
Counter('9일 된 냄비에 담긴 완두콩 죽 뜨거운 완두콩 죽 찬 완두콩 죽'.split())
출력
카운터({'완두':1,'죽':3,'뜨거운':1,'완두':2,'차가운':1,'인':1,'더':1,'냄비' ':1,'아홉':1,'일':1,'오래된':1})
split이 하는 일은 문자열을 가져와서 단어 목록으로 나누는 것입니다. 공백으로 나뉩니다.
"카운터"는 해당 목록을 반복하고 모든 단어를 계산하여 출력에 표시된 개수를 제공합니다.
그 외에도 그 구절에서 가장 흔한 단어를 셀 수 있습니다.
most_common() 메서드는 자주 발생하는 항목을 제공합니다.
count =Counter('9일 된 냄비에 담긴 완두콩 죽 뜨거운 완두콩 죽 차가운 완두콩 죽'.split())print(f"출력\n{count.most_common(1)}")
출력
[('죽', 3)]
예시
print(f"출력\n{count.most_common(2)}")
출력
[('죽', 3), ('완두콩', 2)]
예시
print(f"출력\n{count.most_common(3)}")
출력
[('죽', 3), ('완두콩', 2), ('완두콩', 1)]
튜플 목록을 반환했습니다. 튜플의 첫 번째 부분은 단어이고 두 번째 부분은 개수입니다.
Counter 인스턴스의 잘 알려지지 않은 기능은 다양한 수학 연산을 사용하여 쉽게 결합할 수 있다는 것입니다.
string ='9일 된 냄비에 넣은 완두콩 죽 뜨거운 완두콩 죽 차가운 완두콩 죽'another_string ='완두콩 뜨거운 완두콩 완두콩 차가운 완두콩'a =Counter(string.split())b =Counter(another_string.split ())
# countsadd 추가 =a + bprint(f"출력\n{추가}")
출력
Counter({'완두':7, '죽':3, '완두':2, '뜨거운':2, '찬':2, '인':1, 'the':1, '냄비' ':1, '9':1, '일':1, '이전':1})
# countssub 빼기 =a - bprint(f"출력\n{sub}")
출력
카운터({'죽':3, 'in':1, 'the':1, 'pot':1, 'nine':1, 'days':1, 'old':1})사전>마지막으로 Counter는 데이터를 컨테이너에 저장하는 방법에 있어 매우 똑똑합니다.
위에서 볼 수 있듯이 저장할 때 단어를 그룹화하여 일반적으로 다중 집합이라고 하는 함께 사용할 수 있습니다.
요소를 사용하여 단어를 한 번에 하나씩 가져올 수 있습니다. 순서는 기억하지 못하지만 모든 단어를 한 구절로 묶는다.
예시
print(f"출력\n{목록(a.elements())}")출력
['완두', '죽', '죽', '죽', '뜨거운', '완두콩', '완두콩', '찬', '인', '더', '냄비', '아홉' ', '일', '오래된']예시
print(f"출력\n{목록(a.values())}")출력
[1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1]예시
print(f"출력\n{목록(a.items())}")출력
[('완두', 1), ('죽', 3), ('뜨거운', 1), ('완두', 2), ('차가운', 1), ('인', 1 ), ('the', 1), ('pot', 1), ('nine', 1), ('days', 1), ('old', 1)]