티스토리 뷰

Hobby/Book

[Book] Data Analyst를 위한 Python for Data Analysis

생각많은 소심남 2013. 10. 29. 01:27


사실 내가 Python을 처음 접한건 지난 7월이었다. 그때 내가 들은 수업중에 Coding the matrix란 수업이 있었는데 이 수업의 과제가 보통 Python을 활용한 과제들이 나와서 그때 열심히 공부했던 적이 있다. 그때 써보면서 느낀거지만 Python은 정말 사람이 생각하는대로 구현하기 쉬운 언어라고 생각한다. 어떤 알고리즘도 그냥 Pseudo code로 정의되어 있는 그대로 옮겨 적으면 실행된다. 그걸 일부러 C로 옮기면 갖가지 라이브러리를 불러내고 메모리 접근 관계도 계산해야 되고, 참 복잡해진다. 학교에 있는 어떤 사람은 Python으로 컴파일러도 만들었다고 하니 참.. 신기할 따름이다.

 그런데 그 수업 과제중 하나가 Machine Learning과 관련된 과제였는데 주제가 흥미로웠다. 내용인 즉, 병원에서 환자들의 체세포 샘플을 담은 csv 파일 형식이 있는데 그중 돌연변이 세포의 패턴을 익히고 1000가지 샘플 중 그 세포의 빈도수를 측정하는 것이었다. 이야... 개인적으로는 기계와 생물이 만나는 주제 자체는 매우 흥미롭다고 생각한다. 물론 그런 걸 수행하기 위해서는 당연히 주어진 데이터에 대한 분석이 필요하고 그걸 바로 바라보는 사람이 필요한 것이다.

 시대가 발전해갈수록 Data Analysis의 중요성은 점점 커져간다. 서로가 주고받는 데이터량이 커지면 커질 수록 컴퓨터의 힘을 빌려야 하고, 또 그걸 손쉽게 다루는 사람은 큰 돈을 벌기 마련이다. 학교에서도 이런 빅 데이터에 대해 이슈화가 되가고 어떻게 하면 효율적으로 표현할 수 있는지에 대한 연구가 많이 진행되는 거 같다. 이번에 다루는 Python for Data Analysis도 그런 맥락에서는 Data Analyst에게 필요한 책이 되지 않을까 싶다. 

 이 책은 ipython이라는 툴을 이용하고 내장되어 있는 numpy와 pandas, matplotlib 같은 라이브러리를 활용하여 일반적으로 처리하기 힘든 데이터를 손쉽게 처리하고자 하는데 목적을 두고 있다. 참고로 이책의 저자인 wes mckinney 는 pandas 라이브러리 개발자인데 개발자 입장에서 pandas 의 사용법을 예제와 함께 제시하고 있다. 물론 배열 계산이 많이 들어가기 때문에 일반적으로는 NumPy나 SciPy를 사용하는데 이 책에서는 주로 Numpy를 활용해서 전개하고 있다.

 사실 나도 이런 데이터 분석이라는 영역을 이책을 통해서 처음 알게 되었다. 물론 이전 과제를 통해서 기본적인 Python 문법을 힘들게(?) 익히긴 했지만 그래도 뭔가 할 수 있겠지 했다. 그런데 이런 나같은 사람이 딱 보면 처음엔 글의 내용에 압도당할 수 있다. 처음 예제부터 JSON Data로부터 실시간으로 정보를 받아와서 출력하고, 코드로 도배된 부분이 많아서 초보자 처음만 보면 진짜 어려움을 느낄 수가 있다. 하지만 이책은 정말 기본부터 시작한다. 아무래도 이런 데이터 분석의 기초는 행렬에 저장되어 있는 데이터에 접근하고 연산하는 것부터 시작하는데 거기서부터 딱 시작한다. 조금만 지나치면 과연 이걸로 될까 하는 의심이 들정도로 신기한 결과물들이 나온다. 참고로 이책의 기본 전제는 한줄씩 한줄씩 해보는데 있다. 그래서 책에 나와있는 예제를 그대로 따라서 하면 똑같은 결과를 얻어낼 수 있다. 아래 그림은 8장 마지막에 보면 아이티 지진때 발생했던 피해 규모를 지도상에 도식화하는 예제인데 그냥 차근차근 따라해보니까 다음과 같은 결과를 얻을 수 있었다.



(잠깐 설명을 하자면 아이티 지진 발생시 물자의 수요에 따른 분포를 4가지로 나눠서 표현한 것이다. 참고로 여기에 readshapefile() 함수를 쓰면 이 그림상에 아이티 지도가 따라 그려져서 조금 보기좋게 나올텐데.. 내가 했을땐 잘 안됬다..)


 아무튼 이런식으로 csv 파일 상에 저장되어 있는 데이터를 쭉 불러와서 위와 같이 도식화하면 그만큼 분석하고 이해하는데 쉬워질 것이다. 더구나 이런걸 python으로 구현한다면 그 효율성은 배가 될것이라고 생각한다. 이밖에도 금융이나 경제 분야에 응용할 수 있는 기법과 처리방식들이 많이 제시되어 있어서 아마 이를 필요로 하는 사람들에게는 좋은 참고서가 될 것 같다. 

  항상 책을 읽어보면서 뭔가 새로운걸 접하다보면 참 이런걸 다른데 적용해볼 수도 있겠구나 하는 생각을 가져본다. 나같은 경우는 이제 운영체제의 Performance를 뭔가 도식화해서 표현해야 되는데 물론 위와 같이 대규모 데리터를 활용하는 건 아니지만 조금 응용하면 뭔가 사람들이 이해하기 쉬운 결과물을 뽑아낼수 있을거라고 본다. 물론 기존에 접하던게 아니기 때문에 당연히 어려울 수도 있고, 내가 하는 분야로 implement시키기는 힘들지도 모르겠다. 하지만 뭔가 하나하나씩 해보면 새로운 아이디어도 나오는거고 그게 내가 지금 석사과정을 하면서 뭔가를 만들어낼 길 중 하나가 될거라고 여긴다. 


- Pandas가 궁금한 사람은 한번 공식 홈페이지에 가보는 것도 좋을 거 같다. (http://pandas.pydata.org/pandas-docs/stable/)

댓글