본문 바로가기
자습

How to Use Jupyter Notebook in 2020: A Beginner’s Tutorial

by litaro 2020. 11. 11.

www.dataquest.io/blog/jupyter-notebook-tutorial/

 

How to Use Jupyter Notebook in 2020: A Beginner’s Tutorial

Use this tutorial to learn how to create your first Jupyter Notebook, important terminology, and how easily notebooks can be shared and published online.

www.dataquest.io

Jupyter Notebook을 많이 들어는 봤지만 한번도 써본적이 없어서 궁금하던 차에 나 같은 초보도 따라해볼 수 있는 예제가 있어서 차근차근 해봤다.

Jupyter Notebook 이 무엇인가?

코딩을 하면 코드 뿐 아니라 코딩으로 나온 차트나 수식 같은 결과물을 하나의 문서로 보여줄 수 있는 툴이다. 오호... 거기다가 Open Source Project 로 제공되어 누구나 자유롭게 설치하여 사용할 수 있다.

예제 준비물

Juyter Notebook 설치하기

Anaconda로 설치하면 초보는 편하다고 하는데, 나는 익숙하지 않아서 그냥 pip를 사용했다.

pip3 install jupyter

예제 데이터 준비 

pandas로 데이터를 다루고 Matplotlib으로 차트를 그리는 예제라서 그 때 필요한 csv 파일을 아래에서 다운 받아야한다.

s3.amazonaws.com/dq-blog-files/fortune500.csv

예제 따라하기

1. Jupyter Notebook 실행

준비가 다 되었으면 Jupyter Notebook 실행. 내 컴퓨터에서 로컬 서버가 실행되면서 browser에 jupyter 화면이 뜬다.

jupyter notebook

원하는 폴더에 가서 파일을 만든다 New > Python3 

그러면 내 코드와 결과물을 작성할 수 있는 notebook 파일이 생성된다. Untitled 을 원하는 이름으로 변경.

notebook file 확장자명은 .ipynb 이다. 하나의 nobebook이 생성되면 이런 파일이 하나씩 생성된다. 굳이 궁금하면 text editor에서 열어볼수 있고 JSON형태로 저장되어 있다. format을 잘 이해하면 직접 수정도 가능한데. 굳이 ^^;; 그럴일이 있나 싶다.

2. 필요한 module 설치

일단 notebook 이 생겼으니 예제를 따라서 하나씩 하면 되는데...문제가... pip로 설치해서 그런지 필요한 module이 없어서 ㅠㅠ 설치가 필요하다. 

덕분에 직접 notebook에서 설치하는 명령어를 사용할 수 있었다. ^^

import sys
!{sys.executable} -m pip install numpy

3. Notebook Interface 숙지

cell: code나 markdown 등을 입력할 수 있는 입력창을 얘기한다. 

kernel: 해당 notebook의 code를 실행할 engine. 여기서는 python3

cell에 원하는 code를 넣고 위의 [Run] 버튼을 누르면 실행된다. 오우~ 

신기한것은 실행되면 code가 실행된 번호가 적혀서 한눈에 어떤 흐름으로 실행되어 결과가 나왔는지 알수있다. 

아하~ 요즘 많은 Tutorial들이 Jupyter Notebook으로 작성되는 이유를 알겠다. 특히 python을 주로 사용하는 data engineering 쪽에서.. 바로 코드 (code cell) 가 실행되고 코드가 어떤 의미인지 자세한 설명 (markdown cell)이 친절히 주변에 있다. 거기다 실시간으로 실행하면 결과까지 즉각 나오니~ 나와같은 초보들이 실습하고 하나하나 따라가기에 최적의 환경이다. ^^

command mode : cell out line이 blue  

edit mode : cell out line이 green

두 모드 전환은 [esc] 버튼 -> command mode 과 [enter] 버튼 -> edit mode 로 된다.  command mode일때는 short cut을 사용하면 간편하게 cell을 삭제(D 2번)/삽입(위: A, 아래: B) /실행 (ctrl + enter) 할수 있다. 

Markdown은 쉽게 일반 text를 formatting 해주는 markup 언어다. 직관적이고 어렵지 않아 이미 다른 곳에서도 많이 쓰여서 익숙하다. 

4. Notebook 체험하기

사실 예제 자체는 data를 처리하는 pandas를 이용해서 원하는 데이터만 남기고, matplotlib 으로 차트를 그리는 것으로 해당 module에 대해 별도의 공부가 필요하다. 여기서 목적은 이렇게 code cell에 작성하여 실행하면 output이 같은 notebook에 나와서 깔끔하게 정리할 수 있고 또한 githubs gist share 할 수 있다는 것을 체험하는 것이다. 

준비한 data를 읽어와서 값이 없는 부분을 삭제하고 chart를 그려서 그 data 가 무엇을 보여주는지 분석한다.

fortune500 data를 가져와서 값의 손실이 있는지를 확인하기 위해 dtypes를 체크하는데, profit 이 숫자가 아닌 object 인것을 보면 'NA'인 data가 있다는 것을 알수 있다. 

이 'NA'가 어느정도 되는지 보고, 무시할 정도인지를 확인하는 작업이 필요하다. 이때 각각의 숫자로 보는것 보다 한눈에 볼수 있도록 histogram을 그려 보면 도움이 된다. 500기업중 가장 많은 손실이 23개가 안된다면 최대 4%대의 손실이라 무시할만하니 제거하면 된다.

제거하고 dtyptes를 확인하니 원하는 float64 가 나오는것을 확인할 수 있다. 이제 chart를 그려서 분석해볼수 있다.

chart는 matplotlib를 사용해서 멋있게 보여준다.  

분석을 하는 것은 여기 예제의 목적은 아니기에 pass

5. Notebook 공유

사전준비 

깔끔하게 notebook 을 한번 정리한다. Clear, Restart & Run All

export 하는 방법

아래와 같이 다양한 파일 형태로 export하는 기능을 제공한다.

GitHub 에서 공유

github에 code를 올리는 것은 이미 많이 익숙한데 github이  gist 라는 service를 하는 줄은 몰랐다. gist에 올리면 바로 jupyter notebook 내용을 rendering 해서 보여준다.

먼저 아래 처럼 notebook의 .ipynb 파일을 text editor에서 열어서 json 현태의 내용을 copy한다.

 그리고 gist에서 새로운 파일을 생성하여 내용을 넣고 파일 명 작성한뒤 [Create secret gist] / [Create public gist] 둘중에 선택하면 된다.

그리고 share 할 url이 생긴다. 원하는 사람에게만 share 할수 있다. ^^

NBviewer

Project Jupyter 에서 free로 제공하는 notebook file viewer service다. 

6. Jupyter Notebook Extensions

기본적으로 제공하는 기능 이외를 사용하기 위해서는 extensions을 설치해야하고 아래 명령어를 terminal 창에서 실행하면 된다.

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextensions_configurator enable --user

설치 여부는 notebook 종료 후 다시 켜면 아래와 같은 새로운 Nbextensions tab 이 나오면 되는데, 나 같은 경우도 처음엔 보이지 않아서 This thread on Github 도 참고하다가 안되어... jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html 참고하여 삭제후 다시 설치했다. ^^;;

 

간단한 예제를 따라서 실제로 체험해보니 Jupyter Notebook이 어떤 서비스인지에 대해 확실히 알게 되었다. 물론 추후 실제로 사용하게 되면 extensions과 같은 고급 기능에 대해서는 당연히 공부가 필요할 것이다. ^^