Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python으로 시퀀스에서 가장 자주 발생하는 항목을 식별하는 방법은 무엇입니까?

<시간/>

문제

가장 자주 발생하는 항목을 순서대로 식별해야 합니다.

해결책

카운터를 사용하여 항목을 순서대로 추적할 수 있습니다.

카운터란 무엇입니까?

"카운터"는 각 키에 대한 정수 개수를 보유하는 매핑입니다. 기존 키를 업데이트하면 키가 추가됩니다. 이 개체는 해시 가능한 개체의 인스턴스를 계산하는 데 사용되거나 다중 집합으로 사용됩니다.

"카운터"는 데이터 분석을 수행할 때 가장 친한 친구 중 하나입니다.

이 개체는 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)]