본문 바로가기
카테고리 없음

(엔지니어를 위한) 파이썬 시작하기 강좌[11] jupyter notebook

by 돌종 2022. 11. 22.

(엔지니어를 위한) 파이썬 시작하기[11]

 

내용 : Jupyter notebook

참조 : https://dojang.io/mod/page/view.php?id=2457 (코딩도장 46.2 주피터 노트북 사용하기)

 

 

 

0.시작하며

원래 이번 포스팅은 pandas를 다루기로 했다. pandas는 파이썬으로 데이터 분석을 할 때 사용하는 라이브러리다. 그런데 pandas를 다루기 전에 jupyter notebook을 먼저 다루기로 했다. 지금까지 anaconda prompt와 에디터를 이용해서 코딩을 했다. 다른 개발환경도 있지만 anaconda prompt로 시작한 것은 코딩을 하려면 결국 명령창에 친숙해져야 하기 때문이다. 처음부터 통합환경 등의 개발환경부터 시작하는 것보다 prompt환경으로 시작하는 것이 좋다고 판단했기 때문이다. 이제 다른 개발환경을 익힐 시기가 되었다. 제일 먼저 소개할 환경이 jupyter notebook이다. jupyter notebook은 웹환경(웹브라우저) 환경에서 python을 코딩할 수 있도록 해주는 툴이다. 코드 편집과 결과 출력이 한 창에서 이루어지기 때문에 직관적이고 결과출력을 사용자가 이해하기 좋게 해주는 특징이 있다.

 

1. jupyter notebook 설치

anaconda를 설치했다면 jypyter notebook이 이미 설치되어 있을 것이다. 만일 아나콘다를 설치하지 않고 따로 파이썬을 설치한 경우에는 jupyter notebook을 따로 설치해야 한다. 아나콘다 설치를 추천한다. 다양한 라이브러리들이 같이 설치되기 때문이다.

 

현재 jupyter notebook이 설치되어 있는지 확인하기 위해서 cmd창이나 anaconda prompt창에서 pip show jypyter라고 입력해보자. pip show 명령은 설치된 모듈의 설치된 위치 등을 보여주는 명령이다. jupyter가 설치된 것을 확인할 수 있다.

 

(base) C:\Users\ysj>pip show jupyter
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
License: BSD
Location: c:\programdata\anaconda3\lib\site-packages
Requires: ipykernel, ipywidgets, jupyter-console, nbconvert, notebook, qtconsole
Required-by:

 

 

만일 설치되어있지 않은 경우 아래와 같이 패키지가 설치되어있지 않다는 메시지를 볼 수 있을 것이다.

 

(base) C:\Users\ysj>pip show aaa
WARNING: Package(s) not found: aaa

 

만일 설치되어있지 않다면 아래의 pip명령으로 jupyter notebook을 설치할 수 있다. 그냥 notebook만 입력해야 한다는 것에 주의하자.

 

pip install notebook

 

2. jupyter notebook 실행하기

anaconda prompt에서 아래와 같이 입력한다. 그러면 여러 줄의 메시지가 나타나면서 웹브라우저로 넘어간다.

 

(base) C:\Users\ysj>jupyter notebook

 

(base) C:\Users\ysj>jupyter notebook
[I 2022-11-10 04:50:18.041 LabApp] JupyterLab extension loaded from C:\ProgramData\Anaconda3\lib\site-packages\jupyterlab
[I 2022-11-10 04:50:18.041 LabApp] JupyterLab application directory is C:\ProgramData\Anaconda3\share\jupyter\lab
[I 04:50:18.048 NotebookApp] The port 8888 is already in use, trying another port.
[I 04:50:18.050 NotebookApp] Serving notebooks from local directory: C:\Users\ysj
[I 04:50:18.051 NotebookApp] Jupyter Notebook 6.4.5 is running at:
[I 04:50:18.053 NotebookApp] http://localhost:8889/?token=d6b19ac252f7c67f1958a6710a080d8a457969b2a6069ba5
[I 04:50:18.054 NotebookApp] or target=_blank>http://127.0.0.1:8889/?token=d6b19ac252f7c67f1958a6710a080d8a457969b2a6069ba5
[I 04:50:18.058 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 04:50:18.265 NotebookApp]
To access the notebook, open this file in a browser:
file:///C:/Users/ysj/AppData/Roaming/jupyter/runtime/nbserver-25056-open.html
Or copy and paste one of these URLs:
http://localhost:8889/?token=d6b19ac252f7c67f1958a6710a080d8a457969b2a6069ba5
or target=_blank>http://127.0.0.1:8889/?token=d6b19ac252f7c67f1958a6710a080d8a457969b2a6069ba5

 

메시지의 내용은 notebook에 접속하려면 브라우저 주소창에 표시된 URL을 입력하라는 내용이다. 정상적으로 실행이 되었다면 웹브라우저로 자동으로 넘어가기 때문에 주소창에 URL을 직접 입력할 일은 없다. 만일 자동으로 웹브라우저가 뜨지 않았다면 URL을 입력해서 notebook에 접근할 수 있다.

 

notebook을 끝내려면 anaconda prompt창에서 Ctrl-C를 누르라는 메시지도 볼 수 있다.

 

3. 새 notebook 만들기

웹브라우저를 보면 notebook을 실행시킨 디렉토리의 파일들이 보이는 것을 볼 수 있다. 새로운 노트북을 만들기 위해서 오른쪽 위에 있는 new를 누른다. 그리고 python 3을 선택한다.

 

브라우저에서 새로운 탭이 생기면서 새로운 notebook이 생성되었다. Untitled라는 이름으로 생성된 것을 볼 수 있다. notebook을 실행한 디렉토리에 untitled.ipynb파일이 생성된 것을 볼 수 있다. ipynb확장자는 jupyter notebook 확장자다.

 

4. 노트북 각 부분 기능

Cell : 코드나 mark down을 입력하는 곳이다. 코드가 들어있는 경우 실행버튼으로 실행시킬 수 있다. 코드는 cell단위로 실행시킬 수 있다. 100줄의 코드가 있고 중간에 결과를 확인하고 싶다면 중간까지 별도의 셀로 만들고 값을 확인할 수 있는 코드를 넣어 결과를 확인할 수 있다.

file name : 새로 시작하면 파일이름이 Untitled로 시작한다. notebook을 실행한 디렉토리에 저장된다.

실행버튼 : 현재 커서가 있는 셀을 실행시킨다. 셀에 커서가 있을 때 ctrl-Enter를 쳐도 같은 효과가 있다.

● code/markdown : code는 python코드를 말하는 것이고 markdown은 텍스트만으로 양식을 지정할 수 있는 일종의 약속된 문법이다. 예를 들어 큰 제목을 입력하려면

# 큰제목 # 이렇게 입력하고 실행을 누르면 큰제목이란 글씨가 크게 보인다. code인 경우에는 실행결과가 셀의 아래에 나타나지만 markdown인 경우에는 실행결과가 해당 셀이 바뀐다. markdown원본을 수정하기 위해서 해당 셀을 더블클릭하면 된다. markdown의 문법은 별도로 자세하게 다루겠다.

 

5. 코딩 및 실행

어떤 정수를 입력 받아서 1부터 입력받은 정수까지 더하는 프로그램을 만들어보자.

일단 입력을 받아야 한다. input함수를 기억해보자. input함수는 메시지를 보여주고 사용자로부터 입력을 받는 함수다. input함수를 스트링으로 입력을 받기 때문에 int함수로 정수로 변환했다. 정수로 변환된 값을 a에 저장했다. 이 코드를 notebook의 cell에 입력해보자.

a = int(input("Enter Integer: "))

 

셀에 코드를 입력하면 자동으로 색상이 조정된다. 내장함수는 녹색으로 문자열은 불은색(?)으로 조정되어 읽기가 쉽다. 이제 커서가 셀 안에 있는 상태에서 run버튼을 누르거나 Ctrl-Enter를 입력해보자. 코드를 실행하는 것이다.

셀의 아래 쪽에 입력을 할 수 있는 박스가 뜬다. 이곳에 10을 입력해보자.

 

실행이 끝났다. a에 10이 저장되는 것까지 실행되었기 때문에 아무런 일도 벌어지지 않는 것이 맞다. 여기서 a의 값을 확인해보기 위해서 셀을 하나 추가해보자. 셀의 아래 쪽에 새로운 셀을 추가하려면 b키를 누르면 된다. 당연히 셀안에 커서가 없는 상태에서 b를 눌러야 셀이 추가 된다. 커서가 있는 상태에서 b를 누르면 b가 타이핑 된다.

커서가 보일 때는 오른쪽 위에 연필모양이 보인다.

셀 밖에 마우스를 클릭하면 커서가 없어지고 연필모양도 사라진다. 이때 b를 누르면 아래쪽에 새로운 셀이 추가된다.

새로운 셀이 추가 됐다. b를 타이핑하는 것만으로 새로운 셀을 추가했는데 메뉴에도 같은 기능이 있다. insert메뉴의 Insert Cell Below가 그것이다. 셀 위에 새로운 셀을 추가할 때는 A키를 누르면 된다는 것을 알 수 있다.

새로운 셀에 a라고만 입력하고 Ctrl-Enter를 쳐보다. Run버튼을 눌러도 된다.

셀의 아래쪽에 Out[6] 10이라고 볼 수 있다. 위에서 10을 입력했기 때문에 10이 출력됐다. 여기서 command창에서 실행할 때와의 차이가 나타난다. 이 코드를 sumn.py라고 저장하고

<sumn.py>

a=int(input("Enter integer: "))
a

 

(base) D:\dev\ESC>python sumn.py
Enter integer: 10
(base) D:\dev\ESC>

 

notebook에서와 달리 10이 출력되지 않는 것을 알 수 있다. 일괄 실행시에는 a라는 줄은 아무 일도 하지 않았다. a를 print(a)라고 고쳐서 실행해보면 10이 출력되는 것을 알 수 있다. notebook에서 변수명만 있는 줄을 실행하면 변수에 들어 있는 값을 보여주지만 일괄실행에서는 그렇지 않다는 것을 기억해두자. 일괄실행에서는 print문을 써야 변수 내용을 보여준다.

 

지금 새로운 셀을 추가해서 a를 찍어봤다. 프로그램 중간에 값을 확인하는 과정이다. 디버깅을 한다고 생각해보자. a의 형식이 무엇인지 확인해보자 a대신 type(a)로 수정한다음 ctrl-Enter를 쳐보자. int 즉 integer라고 출력되었다. int함수가 제대로 작동한 것을 확인했다.

이제 이 셀은 필요가 없으니 지우자. 셀을 지우는 단축키는 D두번이다. 물론 커서가 안보이는 상태에서 눌러야 한다.

이제 b를 눌러 새로운 셀을 추가하고 1부터 입력한 숫자까지 더하는 코드를 입력하자.

숫자를 입력받는 코드는 위의 셀에서 입력되어 있기 때문에 최종합계를 저장할 s변수를 0으로 초기화하고, for문으로 1부터 a까지 더하는 코드를 작성했다. 마지막에 결과를 출력하도록 s를 입력했다. print(s)라고 해도 된다.

 

 

s = 0
for i in range(1,a+1):
s=s+i
s

전체 코드는 아래와 같다. 마지막 줄 결과를 출력하는 부분은 print문을 사용했다. 이 코드를 sumn.py로 저장한 후 명령창에서 실행해보자.

<sumn.py>

a=int(input("Enter integer: "))
s = 0
for i in range(1,a+1):
s=s+i
print("sum = ",s)

 

실행결과는 아래와 같다.

(base) D:\dev\ESC>python sumn.py
Enter integer: 10
sum = 55

 

프로그램을 만들 때 jupyter notebook으로 코딩을 하고 마지막에 python파일로 합쳐서 저장할 수 있다. 셀을 마우스로 선택하고 (셀 내부를 선택하는 게 아니라) Ctrl-A를 누르면 모든 셀이 선택된다. 이제 Ctrl-C를 눌러서 클립보드에 복사한 후 에디터에 붙여넣기 하면 된다. out내용들도 같이 선택되는 것처럼 보이지만 코드내용만 복사된다.

 

이번 시간에는 jupyter notebook에 대해서 알아봤다. 명령창에서 작업할 때는 에이터 프로그램과 명령창을 왔다 갔다하는 번거로움이 있지만 notebook을 사용하면 하나의 환경에서 작업이 가능하다. 코드와 그 결과를 한 화면에서 바로바로 확인할 수 있다는 장점이 있다.

 

-끝-