한국어
    • 한국어
    • ENGLISH
    • 日本語
    • 中文-繁體

    2016.11.17 Data Science

    IPython Notebook을 통한 데이터 분석 #1

    데이터 분석 기술은 이제 비단 IT업계 뿐만 아니라 금융, 경제, 언론 등 다양한 분야에서 없어서는 안 될(!) 기술이 되었습니다.

    이렇듯 데이터 분석에 대한 관심과 인기가 높아지면서 분석 과정을 설명하고 결과를 표현하는 방법 또한 다양해지고 있는데요~.

    특히 엔씨소프트에서는 요즘 가장 각광받는 데이터 분석 툴인 IPython Notebook을 적극 도입해 전방위적으로 활용하고 있습니다.

    엔씨소프트 데이터 분석 전문가들이 강추(!)하는 IPython Notebook의 이모저모를, 데이터분석팀 강병수 주임이 3편에 걸쳐 소개해 드리도록 하겠습니다.  ( ͡° ͜ʖ ͡°)


    IPython Notebook(Jupyter Notebook) 이란?

    처음 데이터 분석 업무를 맡았을 땐, 엑셀로 지표를 만들고 보고서를 작성했습니다.

    HiveR을 통해 추출한 데이터를 일일이 엑셀 시트에 삽입하고, 그래프가 포함돼 있는 시트는 데이터 범위를 수정해서 다시 만들었죠. #노가다 #아침이_오네요 

    그렇게 매주 관련 부서에 보고서를 공유했는데, 사람이 하는 일이다보니(...) 데이터를 잘못 넣거나 그래프 범위를 수정하지 않은 채 공유하는 실수가 종종 발생했습니다.

    실수도 줄이고,  반복적인 작업을 자동으로 실행해 깔끔한 시각화까지 가능한 도구가 없을까? 하며 두리번거리던 중, 운명처럼 만난 IPython Notebook이 바로 그런 도구였습니다...!

    데이터 분석에 쓰이는 여러 도구들이 있지만, 그중에서도 다른 언어에 비해 간결하고 깔끔하게 결과물을 표현할 수 있다는 점에서 IPython Notebook은 제 데이터 분석 인생에 큰 전환점이 돼 주었죠.

    IPython Notebook을 처음 접한 데이터 분석 전문가의 심경 #로또맞음 

    데이터 분석 업무가 많은 게임 회사의 특성상, IPython Notebook을 활용하기 전과 후로 엔씨소프트 데이터분석팀의 업무량과 처리 속도에 큰 차이가 생겼다고 봐도 무방할 정도였습니다.

    그래! IPython Notebook 너로 정했어! +ㅁ+ 

    IPython Notebook은 쉽게 말하면(*I는 Interactive의 약자), 대화형 파이썬 공책(!)이라 할 수 있습니다.

    빈 공책 같은 공간에 Python이라는 언어로 데이터를 확인하고, 대상을 분석한 결과물을 대화하듯이 바로 출력해서 볼 수 있는 데이터 분석 도구인 것이죠.

    Notebook 환경은  단순한 메뉴의 인터페이스로 구성되어 있어서, 처음 사용하는 사람도 금방 익숙해 질 수 있습니다.

    IPython 3.0이상부터는 Jupyter라  불려지므로, 이제부터는 Jupyter Notebook이라 부르도록 하겠습니다.

    셀 단위의 순차적인 실행 기능

    그렇다면, Jupyter Notebook을 사용하는 이유는 무엇일까요? Notebook이 가진 장점을 이제부터 하나씩 알아보겠습니다.

    우선 첫 화면부터  보시죠 #쫄지마 #안어려워 

    소설이든 에세이든, 글의 문단이 분리돼 있지 않고 빼곡히 적힌 글은 흐름을 이해하기도 힘들 뿐더러 보고만 있어도 답답합니다. 지금 제 글이 그럴까 봐 살짝 걱정이 됩니다만...

    분석도 마찬가지로 흐름, 즉 분석 과정이 중요합니다. Notebook에서 명령어를 작성하고 실행할 때는 셀이라는 단위로 실행이 됩니다.

    셀을 하나 하나씩 순차적으로 읽어 나가다 보면, 분석 과정도 쉽게 이해할 수 있습니다.

    또 오류가 발생했을 때 어디를 고쳐야 할지 빠르게 판단할 수 있고, 다른 사용자들이 봐도 과정을 이해하기 쉽기 때문에 분석을 재현하기도 좋습니다.

    셀에 명령어를 입력하고 결과가 나오는 화면 

    이와 같은 특성과 웹 인터페이스라는 점을 활용해서, 작성된 Notebook을  웹 상에 공유하기도 합니다.

    인터넷에는 다양한 Notebook 공유 페이지가 있습니다. 공유된 Notebook을 처음 접하는 사람도 셀 단위로 순차적으로 읽어내려가면 금방 자료를 이해할 수 있죠. #정말이야 #속고만사셨나 

    Outlook 메일 데이터를 통해 자신의 메일함을 분석한 Notebook을 보면,  송신자와 수신자에 대한 네트워크 그래프를 통해 이 사람이 어떤 부서와 밀접한 관계가 있는지 쉽게 확인할 수 있습니다.

    주고받은 메일을 Notebook을 통해 분석한 그래프 

    Notebook 공유 갤러리 에 가 보시면, 굉장히 흥미로운 주제를 분석한 노트북도 다수 존재합니다. #나만_흥미로운건_아니겠지 

    함수 자동 완성 기능

    함수 자동 완성 기능은 Python 언어를 처음 접한 사람들이 가장 유용하게 사용할 수 있는 기능입니다.

    분석이나 개발을 할 때, 필요한 라이브러리는 준비가 짠! 하고 돼 있는데 그 안에 어떤 함수를 사용해야 할 지 막막할 때가 많죠.

    이런 막막함이랄까요 #함수 #기억나질않아

    함수명이 기억나지 않거나 입력한 함수 내 지정할 수 있는 변수가 어떤 게 있는지 모를 때, Tab키 하나면 충분합니다.

    #너만_있으면_돼 

    Tab키를 누르면, 라이브러리나 데이터 형식에서 사용할 수 있는 함수 목록이 출력되고, 함수 내에서 Tab키를 누르면 지정할 수 있는 변수의 형태도 확인할 수 있습니다.

    굳이 많은 함수를 외우고 있지 않아도 Python에 대한 기초 지식과 Tab키만 있으면 자신 있게 데이터를 읽고 분석할 수 있죠!

    믿기지 않는다구요? 실제로 보여드리죠. pandas라는 라이브러리에 어떤 함수가 있는지, 파일명이 뭣인지, 변수는 뭣이 중헌지...Tab 키를 누르면?

    이렇게 확인할 수 있다는 사실! *ㅁ*

    마크다운, HTML 및 Javascript 언어 지원

    Python으로 데이터를 분석한 결과만 도출하는 툴에 그친다면, 굳이 Notebook을 사용할 이유가 없겠죠.

    텍스트 문서를 편집할 때 쓰는 ‘마크다운’을 사용해 분석 자료에 설명을 추가할 수 있기 때문에 Notebook은 더욱 강력해집니다.

    도입부에 분석 주제를 적고 분석에 대한 의견이나 설명을 추가하면, 보는 사람이 내용을 더 쉽게 이해할 수 있겠죠? 교육용 보고서로도 활용이 가능해집니다.

    마크다운을 사용해 그림과 글을 추가해 볼까요?

    또한 마크다운뿐만 아니라 Javascript와 HTML도 사용할 수 있습니다. 이를 통해 변수를 전달하며 상호작용을 하는 시각화 자료를 만들어 낼 수 있죠. 아래 예시를 보시겠습니다.

    datetime 라이브러리와 HTML을 사용해 자동으로 해당 지표 발송일을 출력!

    또한 javascript 지원으로 인터렉티브하고 깔끔한 데이터 시각화가 가능합니다.

    datetime 라이브러리와 HTML을 사용해 자동으로 해당 지표 발송일을 출력!

    위의 화면에서 그래프를 그리기 위해 사용한 라이브러리는 Plot.ly라는 시각화 라이브러리입니다. 간단한 Python 명령어와 Plotly라는 라이브러리만으로 깔끔한 그래프를 생성할 수 있습니다.

    이 밖에도 Notebook에서 인터렉티브하게 사용할 수 있는 다양한 시각화 라이브러리들이 존재하죠. ( bokeh , Lightning, mpld3 등)

    Javascript와 HTML을 사용해 직접 함수를 만드는 것도 가능합니다 

    위의 그래프는 데이터 기간을 인터렉티브하게 바꿀 수 있도록 만든 그래프입니다.

    이 밖에도 Python의 강력한 분석용 라이브러리와 함께 Notebook의 편리한 인터페이스는 사용자가 어떻게 사용하느냐에 따라 다양한 기능을 만들어낼 수 있습니다.

    이번 연재를 통해 IPython Notebook을 향한 도전 욕구가 팍팍 생겨나기를 바라봅니다. 이건 충분히 그럴 가치가 있는 데이터 분석 툴이니까요. 🙂


    IPython Notebook, 그렇게 어렵지만은 않죠? 🙂

    2편에서는 엔씨소프트 데이터분석팀에서 IPython Notebook을 실제 활용해 데이터를 분석한 사례를 소개하도록 하겠습니다.