프로그래밍시 데이터들로부터 빈도를 측정하는 것은 매우 자주 있는 일 입니다. 이런 경우 프로그래밍언어에 따라서 다르 긴 하지만 hash 또는 dictionary 형태의 변수를 활용하여 데이터에 따른 빈도를 Count 할 수 있습니다.

저는 요즘 증권사 API를 사용해 보고 있고 주로 Python 을 많이 활용하는데 아래 주소에서 Counter() 에 대한 설명이 자세히 나와 있더군요.

https://data-flair.training/blogs/python-counter/

아래 코드와 같이 너무나 간단하게 데이터의 빈도를 세고 빈도 횟수에 따라 정렬하는 등의 작업을 할 수 있습니다. for 문 등을 사용하여 iteration 을 하고 싶은 경우 dict() 를 통해 dictionary 로 만든 후에 사용 할 수 있더군요. 아무튼 굉장히 편리 할 것 같습니다.

from collections import Counter


c=Counter(['a','b','c','a','b','a'])

print(c)

print(c['a'])

print(c.most_common())

for key,val in dict(c).items():

    print(key, val)

위 코드의 실행 결과는 아래와 같습니다.

Counter({'a': 3, 'b': 2, 'c': 1})

3

[('a', 3), ('b', 2), ('c', 1)]

('a', 3)

('b', 2)

('c', 1)



Python 사용시 dictionary 안에 dictionary 를 계속 해서 추가하고 싶은 경우가 있습니다.

 

마치 우리가 사용하는 탐색기의 폴더 트리 구조와 같이 말이죠 .

 

Python에는 collections 이라는 모듈에서 deque 를 비롯하여 다양한 데이터 타입을 제공하는데 이중에 defaultdict 이라는 타입을 제공하고 있습니다.

 

이를 활용하면 위에 설명한 Tree 구조도 쉽게 만들 수 있습니다.

 

Tree() 구조에 대해서는 아래 주소에서 소개합니다.

 

https://gist.github.com/hrldcpr/2012250

 

위 주소에서 소개를 하므로 사용법에 대해서는 간단히 예를 들어보죠.

 

위 주소에서는 json.dumps 를 사용하여 사용하는 데이터 타입에 대해 console 에 나타냈는데, for 문을 통해서도 각 값들에 반복적으로 접근 할 수 있습니다.

 

위 코드를 실행해보면 아래와 같은 결과가 나옵니다.

 

{"harold": {"username": "hrldcpr"}, "handler": {"username": "matthandlersux"}}

harold username hrldcpr

handler username matthandlersux




+ Recent posts