본문으로 바로가기

정말 왜 한다고 결심하고 시작했지?? 하고 후회하는 일이 있었습니다. 최근 저는 책을 한 권 집필했는데요. 나같은 어중이 떠중이가 뭐 대단하다고 이렇게 책을 쓰겠다는 거지? 하면서 몇번을 후회하다가 결국 모든 작업이 마쳐졌네요... 

저는 출판이라는 작업이 그렇게 어려운지 몰랐습니다. 저자는 그저 아이디어와 글과 자료만 있을 뿐 그건 책이 아니더라구요. 디자인하시는분, 교정, 기획, 편집.. 휴.. 정말 많은 분들의 손길이 거치는 것이 책인것 같습니다. 그래서 더더욱 중간중간 후회했지요..ㅠㅠ. 아무튼.... 사실 저의 공식적인 출판은 NCS의 학습모듈을 집필할 때였습니다만, 그건 일종의 국책사업이고, 이번에는 순수하게 제 의지로 수행하는 거니 첫 출판 책이지요. 이 책의 구성을 하게 된 히스토리가 있습니다만.. 그건 한 번 더 시간을 내서 이야기하는 걸로 하죠^^ 일단. 이 책에서 다루는 데이터와 소스코드는 모두 Github[바로가기]에 있습니다. 창피하지만 책 소개는 아래와 같습니다.^^

파이썬으로 데이터 주무르기

ISBN 979-11-86697-47-4 (93000)

책 소개

독특한 예제를 통해 배우는 데이터 분석 입문

이 책은 누구나 한 권 이상 가지고 있을 파이썬 기초 문법책과 같은 내용이 아닌, 데이터 분석이라는 특별한 분야에서 초보를 위해 처음부터 끝까지 파이썬으로 진행되는 과정을 다룹니다. 서울시 범죄 현황 분석, 셀프 주유소 가격 정보 분석, 19대 대선 결과 분석 등 흥미 있는 목표를 이루기 위해서 파이썬의 기초를 익히고, 데이터를 다루고 분석하는 데 필요한 과정을 대화 형식으로 전개하면서 필요한 기초 내용은 그때 그때 습득하고자 합니다. 마치 파이썬에 대해 잘 모르는 독자가 구글에서 검색하며 코드 한 줄 한 줄을 완성해가는 느낌으로 기술했습니다. 대부분의 장에는 뚜렷한 목표가 있습니다. 항상 시작은 데이터를 얻는 법을 먼저 다루게 되고, 그 데이터를 정제하거나 변경해가며 목표를 이루는 과정을 보여줍니다. 필요하다면 해당 모듈의 튜토리얼을 가지고 와서 기초를 설명하고자 합니다. 아마 이 책을 다 읽고 나면 파이썬이, 또 파이썬으로 수행하는 데이터 분석의 세계가 아주 흥미롭다는 것을 알게 될 것입니다

이 책의 특징

  • Pandas, Matplotlib, numpy, folium, KoNLPy, Beautiful Soup, Selenium 등 데이터 분석과 시각화에 필요한 많은 모듈을 다룬다.
  • 정확한 목표를 가진 실제 프로젝트를 다수 수행하면서 프로젝트 단위로 데이터 분석을 학습할 수 있다.
  • 파이썬이 처음인 독자라도 프로젝트를 수행할 수 있도록 설명한다.
  • 파이썬을 공부했지만 실제로 어디에 어떻게 적용하는지 궁금한 독자
  • 데이터 분석을 통해 얻을 수 있는 결과를 학습과 동시에 경험하고 싶은 독자
  • 프로그래밍 언어가 처음이지만 단기간에 성과를 얻고 싶은 독자

목차

  1. 서울시 구별 CCTV 현황 분석
    1. CCTV 현황과 인구 현황 데이터 구하기
    2. 파이썬에서 텍스트 파일과 엑셀 파일을 읽기 – pandas
    3. pandas 기초 익히기
    4. pandas를 이용해서 CCTV와 인구 현황 데이터 파악하기
    5. pandas 고급 기능 – 두 DataFrame 병합하기
    6. CCTV 데이터와 인구 현황 데이터를 합치고 분석하기
    7. 파이썬의 대표 시각화 도구 Matplotlib
    8. CCTV 현황 그래프로 분석하기
  2. 서울시 범죄 현황 분석
    1. 데이터 획득하기
    2. pandas를 이용하여 데이터 정리하기
    3. 지도 정보를 얻을 수 잇는 Google Maps
    4. Google Maps를 이용해서 주소와 위도, 경도 정보 얻기
    5. pandas의 pivot_table 학습하기
    6. Pivot_table을 이용해서 데이터 정리하기
    7. 데이터 표현을 위해 다듬기
    8. 좀 더 편리한 시각화 도구 – Seaborn
    9. 범죄 데이터 시각화하기
    10. 지도 시각화 도구 – Folium
    11. 서울시 범죄율에 대한 지도 시각화
    12. 서울시 경찰서별 검거율과 구별 범죄 발생율을 동시에 시각화하기
  3. 시카고 샌드위치 맛집 분석
    1. 웹 데이터를 가져오는 Beautiful Soup 익히기
    2. 크롬 개발자 도구를 이용해서 원하는 태그 찾기
    3. 실전: 시카고 샌드위치 맛집 소개 사이트에 접근하기
    4. 접근한 웹 페이지에서 원하는 데이터 추출하고 정리하기
    5. 다수의 웹 페이지에 자동으로 접근해서 원하는 정보 가져오기
    6. Jupyter Notebook에서 상태 진행바를 쉽게 만들어주는 tqdm 모듈
    7. 상태 진행바까지 적용하고 다시 샌드위치 페이지 50개에 접근하기
    8. 50개 웹 페이지에 대한 정보 가져오기
    9. 맛집 위치를 지도에 표기하기
    10. 네이버 영화 평점 기준 영화의 평점 변화 확인하기
    11. 영화별 날짜 변화에 따른 평점 변화 확인하기
  4. 셀프 주유소는 정말 저렴할까
    1. Selenium 사용하기
    2. 서울시 구별 주유소 가격 정보 얻기
    3. 구별 주유 가격에 대한 데이터의 정리
    4. 셀프 주유소는 정말 저렴한지 boxplot으로 확인하기
    5. 서울시 구별 주유 가격 확인하기
    6. 서울시 주유 가격 상하위 10개 주유소 지도에 표기하기
  5. 우리나라 인구 소멸 위기 지역 분석
    1. 목표 명확히 하기
    2. 인구 데이터 확보하고 정리하기
    3. 인구 소멸 위기 지역 계산하고 데이터 정리하기
    4. 대한민국 지도 그리는 방법에 대한 소개
    5. 지도 시각화를 위해 지역별 고유 ID 만들기
    6. Cartogram으로 우리나라 지도 만들기
    7. 인구 현황 및 인구 소멸 지역 확인하기
    8. 인구 현황에서 여성 인구 비율 확인하기
    9. Folium에서 인구 소멸 위기 지역 표현하기
  6. 19대 대선 결과 분석
    1. Selenium과 Beautiful Soup을 이용한 데이터 획득 준비 작업
    2. 19대 대선 개표 결과 데이터 획득하기
    3. 각 후보의 득표율과 지역 ID 정리
    4. 19대 대선 결과 득표율 시각화하기
  7. 시계열 데이터를 다뤄보자
    1. Numpy의 polyfit으로 회귀(regression) 분석하기
    2. Prophet 모듈을 이용한 forecast 예측
    3. Seasonal 시계열 분석으로 주식 데이터 분석하기
    4. Growth Model과 Holiday Forecast
  8. 자연어 처리 시작하기
    1. 한글 자연어 처리 기초 - KoNLPy 및 필요 모듈의 설치
    2. 한글 자연어 처리 기초
    3. 워드 클라우드
    4. 육아휴직 관련 법안에 대한 분석
    5. Naïve Bayes Classifier 의 이해 – 영문
    6. Naïve Bayes Classifier 의 이해 – 한글
    7. 문장의 유사도 측정하기
    8. 여자친구 선물 고르기



댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. 한도림 2017.12.21 13:51 신고

    출판 축하드립니다. 파이썬 공부에 도움되는 블로그였는데 책까지 출판하다니 꼭 읽어보고 싶습니다.
    혹시 folium choropleth에 대해서 자세히 설명이 되어있습니까?

  3. BlogIcon peterjun 2017.12.22 01:59 신고

    와우.... 축하드립니다.
    정말 멋지세요. ^^
    관심에 대한 열정이 이룩한 결과겠네요.

  4. BlogIcon Bliss :) 2017.12.22 14:16 신고

    우아아아~~ 어메이징!!합니다^^ 책을 출판하시다니...파이썬에 관심이 많으시다고 하시더니..책을 출판하실 정도면 관심 그 이상이신데 겸손하셨던 거네요!!! 축하드립니다^^ 새해의 좋은 기운 받아 쭉쭉 잘 팔리길 바래봅니다^^

  5. BlogIcon SoGentle 2017.12.24 02:14 신고

    축하드립니다.
    책 목차는 활용적인 내용들인데. 기초부터 작성하셨다니. 대단하시네요.
    주문하러 가겠습니다!

  6. BlogIcon 핑구야 날자 2017.12.24 21:49 신고

    와우 축하드립니다 정말 대단하시네요

  7. BlogIcon GeniusJW 2017.12.25 22:52 신고

    우왓!!
    책 출간하셨군요~
    축하드립니다!

  8. BlogIcon 라라윈 2018.01.03 15:19 신고

    축하드려요!!
    저에게 꼭 필요한 책이라 더더더더더더 반갑네요.
    좋은 책 내주셔서 감사합니다!

  9. dlsgur 2018.01.18 18:22 신고

    import folium
    import json
    geo_path = 'c:/data/skorea_municipalities_geo_simple.json'
    geo_str = json.load(open(geo_path,encoding='utf-8'))
    map = folium.Map(location=[37.5502,126.982],zoom_start=11,

    tiles='Stamen Toner')
    map.choropleth(geo_data=geo_str,
    data = crime2016T_norm['살인'],
    columns = [crime2016T_norm.index, crime2016T_norm['살인']],
    fill_color = 'PuRd',
    key_on = 'feature.id')
    map

    ##########################

    책 사서 공부하고 있는 대학생입니다 ㅎㅎㅎ
    다름이 아니라 위 코드 (folium으로 그리는 살인발생건수 지도시각화) 했는데

    그림처럼 살인발생건수에 따라 빨간색이 나오지 않고
    그냥 지도만 출력되는데 왜 그런거죠??

    • BlogIcon PinkWink 2018.01.18 19:44 신고

      아무런 에러메세지가 없는거죠?? 지도는 잘 나오고 있는데 경계선만 없다는 거죠...

      그리고, geo_path의 json파일 이름이 02.으로 시작하는 건 없애버리신 건가요?? 02.으로 시작하는것과 05.로 시작하는 아이가 내용이 조금 다릅니다.

      그리고 또 혹시 folium의 버전을 확인해보시겠어요??
      터미널에서 conda list라고 입력해서 나온 출력중에 folium을 찾아서 확인해서 알려주세요...
      소스코드에서는 (들여쓰기는 복사하는 중에 문제인것 같고) 문제가 없어보이니까요...

    • dlsgur 2018.01.18 23:29 신고

      아아 해결했습니다!! 감사힙니다 ㅠㅠ

    • BlogIcon PinkWink 2018.01.19 00:22 신고

      흠.. 뭐가 문제였는진 모르지만 해결하셨다니 다행입니다.^^

  10. bluepeach 2018.02.06 21:19 신고

    안녕하세요! 책 구입해서 열심히 따라해보려 노력중입니다.
    다름이 아니라 anaconda에서 wordcloud 설치까지는 되는 것 같은데..(터미널에서 pip install wordcloud 입력해서 설치) 실제로 책 p.297처럼 from wordcloud import WordCloud, STOPWORDS 코드를 입력하면 아래와 같은 오류메시지가 나옵니다. 이 댓글창에 긴 오류메시지를 붙이는 게 죄송스럽지만 ㅠㅠ 해결되면 오류메시지는 삭제하도록 하겠습니다!
    ImportError Traceback (most recent call last)
    <ipython-input-3-12da445271f7> in <module>()
    ----> 1 from wordcloud import WordCloud, STOPWORDS

    C:\ProgramData\Anaconda3\lib\site-packages\wordcloud\__init__.py in <module>()
    ----> 1 from .wordcloud import (WordCloud, STOPWORDS, random_color_func,
    2 get_single_color_func)
    3 from .color_from_image import ImageColorGenerator
    4
    5 __all__ = ['WordCloud', 'STOPWORDS', 'random_color_func', 'get_single_color_func', 'ImageColorGenerator']

    C:\ProgramData\Anaconda3\lib\site-packages\wordcloud\wordcloud.py in <module>()
    17 from operator import itemgetter
    18
    ---> 19 from PIL import Image
    20 from PIL import ImageColor
    21 from PIL import ImageDraw

    C:\ProgramData\Anaconda3\lib\site-packages\PIL\Image.py in <module>()
    54 # Also note that Image.core is not a publicly documented interface,
    55 # and should be considered private and subject to change.
    ---> 56 from . import _imaging as core
    57 if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
    58 raise ImportError("The _imaging extension was built for another "

    ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.

    감사합니다!

    • BlogIcon PinkWink 2018.02.07 08:48 신고

      이런 에러를 만난다는 분들의 연락을 받습니다. 딱 원인을 설명하기 어려운것 같습니다. 일단... 이미 설치하셨던 wordcloud를
      pip uninstall wordcloud 로 제거하시고...
      conda list로 wordcloud가 없어 졌는지 확인하시고...
      conda install pip 를 한 번 수행하신 다음
      다시
      pip install wordcloud를 실행해 보시고 다시 결과를 알려주세용~~~~

    • bluepeach 2018.02.07 09:21 신고

      네 조언 감사합니다!! 어젯밤에 이런 저런 방법을 시도해 보다가 anaconda3를 지우고 다시 깔았더니 어이없게 해결되었네요 ㅎㅎ 좋은 하루 보내세요, 감사합니다 :)

    • BlogIcon PinkWink 2018.02.07 11:09 신고

      어이쿠~ 축하드립니다.^^

    • 2018.04.02 14:15

      비밀댓글입니다

    • BlogIcon PinkWink 2018.04.02 14:26 신고

      네... 그렇군요... 저런...
      일단 강의에 실망이 크신 모양입니다.ㅠㅠ.

      "책 내용을 그대로 복사ㅠㅠ."

      아마 아직은 Python 수업을 본인만의 컨텐츠로 진행하시는 것에는 부족하셔서 그런가봅니다.

      그러나 전 사실.. 더 걱정되는 것은
      그 책이 오타가 많고, 출판된지 몇 개월 되지 않았지만... 대상 사이트들의 구조가 조금씩 바뀌어서 그대로 진행하면 좀 힘들 수 있어서 걱정이네요..ㅠㅠ.

      그나저나 기관은 어디인가요??^^

  11. BlogIcon 구차니 2018.03.06 05:50 신고

    저도 책 한권 내보는게 꿈인데 부럽습니다. ㅠㅠ

  12. 도건우 2018.03.09 10:35 신고

    github 에서 파일을 다운받으려고하는데요 xls 파일은 다운로드 가있는데

    csv 파일은 어떻게 다운을받아야하는지 모르겠습니다. 알려주세요!

    • BlogIcon PinkWink 2018.03.09 10:45 신고

      github은 개별 페이지에서는 다운로드가 지원되지 않아서 불편하실 수 있겠네요..
      https://github.com/PinkWink/DataScience
      이 주소에서 Clone or Download 버튼을 눌러 통으로 다운로드(zip)하셔서 사용하시면 편합니다.

  13. 이민현 2018.05.12 22:04 신고

    안녕하세요. 현재 작가님의 책 '파이썬으로 데이터 주무르기'를 보고 있는 독자입니다. 궁금한 게 있어 부득이하게연락드립니다. 책에 있는 xslx 데이터 파일을 쥬피터노트북에 업로드하고 해당 데이터 파일을 utf-8으로 인코딩 되지 않았다. saving disavbled 라고 뜨는데 해당 문제를 어떻게 해결해야 할까요?

    • BlogIcon PinkWink 2018.05.14 10:15 신고

      죄송합니다. 사실.. 설명하신 것 만으로는 어떻게 답변을 해야할지를 잘 모르겠습니다. 혹시 에러가 나는 상황을 캡쳐해서 책에 있는 메일로 저에게 한 번 보내주실수 있나요?^^ 블로그 댓글은 그림파일등이 첨부되지 않아서요...

    • 이민현 2018.05.23 09:41 신고

      안녕하세요. 인코딩 문제가 해결되지 않아 데이터 내의 모든 한글을 영어로 바꾸어서 진행했더니 해결되었습니다. 감사합니다.

    • BlogIcon PinkWink 2018.05.23 17:45 신고

      그렇다면.. 이후 진행에도 어려움이 있을텐데요.
      인코딩 문제를 해결해야할 듯 한데ㅠㅠ.
      저도 현재 겪고 계신 문제를 잘 모르겠네요ㅠㅠ.

  14. 최인회 2018.05.22 14:19 신고

    프로그래밍에 관심갖고 처음 배우고 있는 경제학과 학생입니다..
    지금 파이썬 주무르기를 통해서 배우고 잇는데요.. 한가지 막히는게 있어서 질문 드려요..
    서울시 구별 주유가격과 구별 인구수의 상관관계를 알아보기 위해
    책에 있는 내용 피벗테이블을 이용해 구별 평균 주유가격 뽑는것까지 봤습니다.

    여기서 서울시 구별 인구수 엑셀파일을 load해서 두 데이터(구별평균주유가격,구별인구수)를 merge 하고 싶은데요
    공통의 column을 '구'로 가져야 merge가 될텐데
    구별평균주유가격의 경우 index가 '구'로 돼있어서 merge가 안되네요..

    잘 설명이 되지않아.. 관련사진을 메일로 보낼께요. 바쁘시겠지만 답변 해주시면 정말 감사하겠습니다..

  15. BlogIcon 도경 2018.05.30 23:46 신고

    깃헙에 나온것 외에도 오타들이 몇몇 있는데
    풀리퀘 보내면 안되는건가요?

  16. 2018.06.19 17:51

    비밀댓글입니다

    • BlogIcon PinkWink 2018.06.20 09:37 신고

      네.. 감사합니다. 사실 많은 분들이 그 부분에 대해 알려주셨는데...
      현 시점에서는 오타 정리를 하지 않았습니다.
      데이터를 받는 연도마다 다르기도 하고 코드의 출력부분이라서요.
      아무튼...
      이렇게 시간을 내서 알려주셔서 감사합니다.^^

  17. 2018.08.27 15:41

    비밀댓글입니다

    • BlogIcon PinkWink 2018.08.28 00:05 신고

      path의 연결에 문제가 있을 것 같은데요. anaconda prompt를 실행해서 jupyter notebook을 시도해보시지요. 그리고 두 번째 질문에는 답변을 못하겠습니다.ㅠㅠ. 몰라서요ㅠㅠ

  18. mug200ml 2018.09.06 17:13 신고

    깃허브 아래 내용에 코드[56]이 아닌가 싶습니다.

    P151, 첫 줄, 코드 [105]를 --> 코드 [51]을 (조힘찬빛님 감사합니다.)

    • BlogIcon PinkWink 2018.09.07 00:50 신고

      아이쿠. 그런가요?
      안그래도 지금 전체 코드를 확인하고 있습니다. 하도 바뀐 부분이 많아서요. 다시 정리해보도록 하겠습니다. 감사합니다.^^

  19. 차잉 2018.09.19 16:57 신고

    안녕하세요 파이썬으로 데이터 주무르기 책을 구입하여 공부하고 있는 독자입니다.
    2장 서울시 범죄 현황 분석을 보고 따라하는데

    from sklearn import preprocessing

    col=["강간","강도","살인","절도","폭력"]

    x = crime_anal[col].values
    min_max_scaler = preprocessing.MinMaxScaler()

    x_scaled = min_max_scaler.fit_transform(x.astype(float))
    crime_anal_norm = pd.DataFrame(x_scaled, columns = col, index = crime_anal.index)

    col2 = ["강간검거율","강도검거율","살인검거율","절도검거율","폭력검거율"]
    crime_anal_norm[col2] = crime_anal[col2]
    crime_anal_norm.head()

    위의 코딩을 입력하면

    ImportError Traceback (most recent call last)
    <ipython-input-42-1283e7c133ba> in <module>()
    ----> 1 from sklearn import preprocessing
    2
    3 col=["강간","강도","살인","절도","폭력"]
    4
    5 x = crime_anal[col].values

    ~\Anaconda3\lib\site-packages\sklearn\__init__.py in <module>()
    132 else:
    133 from . import __check_build
    --> 134 from .base import clone
    135 __check_build # avoid flakes unused variable error
    136

    ~\Anaconda3\lib\site-packages\sklearn\base.py in <module>()
    11 from scipy import sparse
    12 from .externals import six
    ---> 13 from .utils.fixes import signature
    14 from . import __version__
    15

    ~\Anaconda3\lib\site-packages\sklearn\utils\__init__.py in <module>()
    7 import warnings
    8
    ----> 9 from .murmurhash import murmurhash3_32
    10 from .validation import (as_float_array,
    11 assert_all_finite,

    ImportError: cannot import name 'murmurhash3_32'

    이런 에러가 나오는데 초보인 저에겐 너무 어렵네요
    2시간째 못잡고 있어요 ㅠㅠ

    혹시 도와주실 수 있을까요??

  20. red621 2018.10.03 20:34 신고

    안녕하세요? 책으로 공부하다가 에러가 나서 문의드립니다. 2장에서 seaborn dataset(예. tips, flights 등)을 불러올 때 에러가 발생하는데 해결방법에 대해 알려주시면 감사하겠습니다. 깃허브 상의 선생님의 코드로 돌려도 테이블이 나타나지 않고 에러가 뜨네요...

    • BlogIcon PinkWink 2018.10.05 03:51 신고

      그래요? 혹시 seaborn만 업데이트를 해보는 건 어떨까요? 터미널 명령을 사용하기 어려우시면 anaconda 네비게이터로 가셔서 모듈을 업데이트 하셔도 됩니다.

  21. 이정인 2018.10.07 21:21 신고

    안녕하세요. 책에 일부 파일들의 다운로드 방법에 대해 문의 드립니다. https://github.com/PinkWink/DataScience/tree/master/data/01. population_in_Seoul.xls ==> 다운로드 가능. 하지만 같은 폴더에 있는 01. CCTV_result.csv 또는 03. test_first.html 등 다운로드 버튼이 없는 파일들은 어떻데 다운 받나요?

    • BlogIcon PinkWink 2018.10.10 07:51 신고

      https://github.com/PinkWink/DataScience
      주소에서 전체 다운로드를 하실 수 있습니다.^^
      개별 접근은 안되더라구요^^