collection
모듈파이썬 표준 라이브러리에 collection
모듈이 내장(built-in)되어 있다. 자료구조 - 리스트, 튜플, 딕셔너리가 범용 데이터 사이언스 자료구조라면 다음 collection
모듈에 포함되어 있는 몇몇 자료구조는 익히게 되면 도움이 될 수 있다.
Counter
: 해쉬객체를 개수하는 딕셔너리defaultdict
: 딕셔너리로 팩토리 함수를 호출할 수 있음.deque
namedtuple
OrderedDict
Counter
빈도수 세기collections
모듈에는 흔히 사용되는 기능 중 하나인 Counter
도구가 포함되어 있다. 예를 들어, 리스트에 들어있는 단어 중 가장 빈도가 많은 것은 무엇인지 Counter()
객체를 생성한 후에 for
루프를 돌려 간단하게 계산해 낼 수 있다.
from collections import Counter
cnt = Counter()
words = ['red', 'blue', 'red', 'green', 'blue', 'blue']
for word in words:
cnt[word] += 1
cnt
Counter({'blue': 3, 'red': 2, 'green': 1})
.most_common()
메쏘드를 사용하게 되면 가장 빈번한 단어를 내림차순으로 찾아낼 수도 있다.
cnt.most_common(1)
[('blue', 3)]
윈도우 시작버튼을 누르고 Anaconda3 (64-Bit)
아래 Anacoda Prompt
터미널을 열고 python
을 실행한 후에 import nltk
를 입력한 후에 순차적으로 nltk.download('gutenberg')
명령어를 실행시켜 구텐베르그 프로젝트에 등록된 문학작품을 다운로드 받는다.
(base) C:\Users\사용자명> python
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>> nltk.download('gutenberg')
[nltk_data] Downloading package gutenberg to
[nltk_data] C:\Users\사용자\AppData\Roaming\nltk_data...
[nltk_data] Unzipping corpora\gutenberg.zip.
True
Free eBooks - Project Gutenberg 웹사이트에서 모비딕(melville-moby_dick.txt
) 소설책을 다운로드 받는다. 그리고 나서 re.findall()
메쏘드를 사용해서 단어를 추출한다. Counter(words)
를 호출해서 가장 빈도수가 높은 단어 10개를 추출해낸다.
from nltk.corpus import gutenberg
gutenberg.fileids()
['austen-emma.txt', 'austen-persuasion.txt', 'austen-sense.txt', 'bible-kjv.txt', 'blake-poems.txt', 'bryant-stories.txt', 'burgess-busterbrown.txt', 'carroll-alice.txt', 'chesterton-ball.txt', 'chesterton-brown.txt', 'chesterton-thursday.txt', 'edgeworth-parents.txt', 'melville-moby_dick.txt', 'milton-paradise.txt', 'shakespeare-caesar.txt', 'shakespeare-hamlet.txt', 'shakespeare-macbeth.txt', 'whitman-leaves.txt']
moby_dick = gutenberg.open('melville-moby_dick.txt').read()
import re
words = re.findall('\w+', moby_dick.lower())
Counter(words).most_common(10)
[('the', 14431), ('of', 6609), ('and', 6430), ('a', 4736), ('to', 4625), ('in', 4172), ('that', 3085), ('his', 2530), ('it', 2522), ('i', 2127)]
itertools
모듈itertools
모듈도 파이썬 표준 라이브러리의 한축을 이루고 있으며 반복자(iterator)를 생성하고 사용하는데 큰 도움이 된다.
product
, permutations
, combinations
accumulate
, chain
, zip_longest
count
, cycle
, repeat
from itertools import combinations
dataframe_types = ['Integer', 'Numeric', 'Character', 'Factor']
dataframe_combo = combinations(dataframe_types, 2)
dataframe_combos = [*dataframe_combo]
print(dataframe_combos)
[('Integer', 'Numeric'), ('Integer', 'Character'), ('Integer', 'Factor'), ('Numeric', 'Character'), ('Numeric', 'Factor'), ('Character', 'Factor')]