데이터분석을 위한 거미줄 가져오기 - 사내 도서관에서 빌려읽기

기대가 컸던 탓일까? 조금 많이 아쉬운 책이다. 기본적인 웹 크롤링 기법을 소개하긴 하지만 깊이가 입문에 그친 느낌이다.  하지만 저자의 의도가 정확히 반영된 책이라는 생각이다. 나야 오래전 검색엔진을 개발하면서 크롤링을 C++로 구현했던 경험도 있었고, 그 뒤에도 파이썬과 BS(BeautifulSoup)을 이용하여 크롤러를 구현해 본 적이 있기 때문에 내용이 쉽게  느껴졌다.

 

이 책은 총 3편으로 구성된다. 파이썬을 사용할 줄 안다면 1편은 넘어갈 수 있다. 웹의 동작원리를 안다면 3장은 그냥 넘어가도 된다. 파이썬으로 웹을 크롤링할 때 중요한 모듈이 requests와 BeautifulSoup이다. 이 두 모듈을 이용한 다음 직접 HTTP 호출을 통해 크롤링하는 방법, 동적 웹사이트를 위해 웹드라이버를 이용하여 셀레니엄으로 크롤링하는 방법, 데이터 제공자가 API를 제공해 줄 경우 사용하는 방법을 소개한다.  3편은 데이터 분석이었는데, pandas와 matplotlib의 기본적인 사용법을 다룬다. 사실 mysql 데이터베이스로 저장하는 것은 살짝 애매하다고 생각한다.  매번 데이터베이스로 갱신하는 방법도 좋지만 CSV를 mysql로 직접 importing하는 방법도 좋지 않을까?

 

 

1편은 총 2개 장에 걸쳐 파이썬의 기본적인 문법을 설명한다. 

1장은 파이썬 소개, 아나콘다 설치하고 가상환경 설치하는 내용

2장은 파이썬 자료구조, 연산자, 반복문, 예외처리, 함수, 패키지, 클래스 

 

2편은 웹 크롤링의 기본적인 내용으로 4개의 장으로 구성된다.

3장부터 크롤링, HTML, CSS, BS 소개,셀레니엄 소개, API로 데이터 얻기를 소개한다.

 

3편은 데이터 분석 부분인데, CSV로 만들고, 데이터를 그래프로 그리는 방법 정도를 소개한다.

7장에서 pandas로 CSV와 엑셀 파일 처리, matplotlib으로 데이터 시각화 8장은 mysql 데이터베이스로 수집한 데이터 넣는 내용.

 

웹 크롤링에 파이썬을 사용하기로 했다면 크롤링 관련 프로젝트들이 많다. 예를 들어 scrapy 같은 프레임워크가 이미 잘 나와있는데, 이런 부분에 대한 소개가 약한 느낌이 들었다. 하긴 입문자들에게는 이런 프레임워크를 처음부터 사용하면 프레임워크의 기능 제약사항에 갇히게 될 것이니, 기본 바탕을 익히는 정도로 이 책을 살펴보면 좋을 것 같다.

 

 

 

 

 

반응형

 

개인적으로 구체적인 스토리를 가지고 특정 기술을 설명하는 방식을 좋아한다. 기술이 발전하면서 다양한 측면에서 발전이 이루어지기 때문에 기술 그 자체를 중심에 놓고 학습하다보면 종종 그 기술을 왜 배우고 어떻게 사용할 것인지라는 나침반을 잊어버리게 되기도 한다.

 

개발 측면에서 나는 C++개발자로 분류되지만, 데이터 분석 같은 작업에는(대용량 데이터 분석이 아닌 이상) 로컬머신에서 파이썬을 주로 사용한다. 파이썬은 이미 충분한 성능 및 좋은 데이터 분석 라이브러리를 갖추고 있다. (불행(?)히도 점점 파이썬을 사용하는 비중이 높아지고 있다. 다행히 C++ 역시 파이썬과 문법적 개념이 비슷해지고 있다.)

 

최근 데이터 분석과 관련된 파이썬 책이 많이 출간되고, 출간될 예정이다. 그런데 그동안 읽었던 책 중에서 마음에 드는 책을 발견하여 소개한다. 바로 O'reilly에서 출간된 'Data Wrangling with Python'이란 책이다.

 

 

Book Cover

 

http://www.amazon.com/Data-Wrangling-Python-Tools-Easier/dp/1491948817/

 

책 제목에서 알 수 있듯, 이 책은 파이썬을 사용하는 책이긴 하지만 범용 파이썬 개발자를 대상으로 쓰인 책이 아니다. 파이썬으로 데이터를 요리조리 다루고 싶은 사람(책 저자는 언론사나 데이터 분석가를 대상으로 쓴 것 같다.)들을 위한 책이다.

 

책은 크게 3개 부분으로 나뉘어진다. 1)데이터 획득 2) 데이터 정리 3) 데이터 탐험

 

데이터 분석 플로

데이터를 다루게 된다면 대부분 위 그림과 같은 작업 흐름을 따르게 될 것이다. 이 책은 위 그림의 각 단계에서 파이썬을 어떻게 활용할 수 있는지를 적절하게 잘 설명하고 있다. 예컨데 데이터 획득의 경우, 물론 데이터의 정의부터 시작하지만, 엑셀 파일, CSV(TSB), JSON, XML등 다양한 데이터 소스를 처리하는 방법을 소개한다. 각 소주제에 따라 파이썬에서 유명한 모듈들을 소개한다. 기본적인 파이썬의 문법이나 자료구조(딕셔너리, 리스트, 셋 등)들에 대해서도 짧게 다루지만, 이 책으로 파이썬 문법을 이해하기에는 글쎄. 조금 힘들다. 기본적인 문법을 알고 있는 상태라면 초급에서 중급으로 올라갈 수 있는 디딤돌이 될 것이다.

 

7장과 8장에서는 데이터에서 부적절한 데이터나 튀는 데이터, 신뢰성이 있는 데이터인지 등을 검증하는 방법들을 소개한다. 이후 데이터 탐색 및 프리젠 테이션을 다루는데, 후반에는 약간 내용의 중심이 흐려지는 기분이 있다. 웹스크래핑을 다루는 11장/12장의 내용은 개인적으로는 Acquire the Data섹션에서 소개되어야 적절하다고 본다. 후반부에서 자동화 및 확장성을 고려한 구조등을 다룰 때도 한 챕터에 다루기에는 너무 큰 내용이지 않았나 싶다. 

 

파이썬을 공부하기 위하여 이 책을 골랐다면 부적절한 선택일 수 있다. 반대로 데이터를 처리하는 비 개발자가 이 책을 본다면 왠지 파이썬 기본 문법책을 하나 찾고싶은 욕구가 생길지도 모르겠다. 파이썬이 데이터 처리 분야에서 가지는 장점을 잘 훑어볼 수 있다.  또한 파이썬 개발자가 데이터를 처리하기 위하여 자신의 기술을 어떻게 활용할 지를 알고 싶다면 좋은 선택일 수도 있겠다.

 

회사내 데이터를 다루는 팀 동료에게 이 책을 권했는데, 대단히 흥미로워 한다. 읽으면서 파이썬이라는 언어에 흥미를 가진다. :) 이 책의 효과는 이로써 충분하다.

 

 아직은 한글판이 없지만, 조만간 인사이트 출판사를 통해 번역본도 나올 듯 하다.  국내 데이터 엔지니어들에게도 파이썬의 날개를 달아주었으면 좋겠다.

 

 

반응형

+ Recent posts