Jupyter notebook 소개

Jupyterlab
Jupyter
Python
Data science
Author

Taeyoon Kim

Published

January 10, 2023

Modified

April 5, 2025

Jupyter Notebook은 웹 브라우저를 통해 실행되는 오픈 소스 인터랙티브 컴퓨팅 환경입니다. 코드, 텍스트, 수식, 이미지 등 다양한 형태의 콘텐츠를 하나의 문서에 통합하여 작성, 실행 및 저장할 수 있어 코딩과 문서화를 동시에 할 수 있다는 장점이 있습니다. 그리고 Python뿐 아니라 R, Julia, Scala 등 40개 이상의 프로그래밍 언어를 지원합니다. 작성한 노트북을 동료와 공유하거나 GitHub, Binder, JupyterHub 등의 플랫폼을 통해 배포할 수 있어 데이터 과학, 머신러닝 연구, 교육 및 문서화에 매우 유용합니다.

1 Jupyter Notebook의 주요 기능

Jupyter Notebook은 초보자도 쉽게 시작할 수 있는 직관적 기능과 동시에 전문가가 심화 분석을 수행할 수 있는 다양한 확장 및 커스터마이징 옵션을 제공합니다.

1.1 코드 실행 및 문서화

  • 인터랙티브 코드 실행: 셀 단위로 코드를 작성하고 실행하여 그 결과를 즉시 확인할 수 있습니다. 이는 데이터 분석, 시뮬레이션 및 머신러닝 모델 개발 시 신속한 피드백을 가능하게 합니다.
  • Markdown 및 LaTeX 지원: Markdown 셀을 이용해 설명 텍스트, 수식, 표 등을 삽입할 수 있으며 LaTeX 수식은 MathJax를 통해 렌더링됩니다.
  • 단축키 및 모드: Jupyter Notebook은 셀 선택(커맨드 모드)와 코드 편집(에디트 모드) 등 두 가지 모드를 제공하며 다양한 단축키를 통해 작업 효율을 극대화할 수 있습니다.

1.2 데이터 시각화 도구 통합

Jupyter Notebook은 Matplotlib, Seaborn, Plotly, Bokeh 등 다양한 시각화 라이브러리와 원활하게 통합됩니다. 또한 코드를 실행하면 결과가 셀 바로 아래에 출력되며, 이를 통해 데이터 분석 및 모델 개발 과정에서 식별된 패턴 및 이상치를 즉시 확인할 수 있습니다.

2 Jupyter Notebook 설치

Jupyter Notebook은 다양한 방식으로 설치할 수 있으며 사용 목적 및 사용자 환경에 따라 선택할 수 있습니다. 2025년도 기준으로 저는 pixi혹은 uv를 사용하는 것을 권장드립니다. pixi를 사용한다면 pixi add jupyterlab, uv를 사용한다면 uv add jupyterlab으로 설치할 수 있습니다.

3 Jupyter Notebook 실행

Jupyter Notebook을 실행하는 방법은 다음과 같습니다:

  1. 명령 프롬프트 또는 터미널 실행:
    • Windows에서는 검색창에 “cmd”를 입력하고 엔터를 눌러 명령 프롬프트를 실행합니다.
    • macOS나 Linux에서는 터미널을 엽니다.
  2. Jupyter Notebook 실행 명령어 입력:
    • 명령 프롬프트나 터미널에서 다음 명령어를 입력합니다:

      jupyter-lab
    • 그러면 Jupyter Notebook 서버가 시작됩니다.

  3. 웹 브라우저 자동 실행:
    • Jupyter Notebook 서버가 시작되면 기본 웹 브라우저가 자동으로 열리며 Jupyter Notebook 인터페이스가 표시됩니다.
  4. 새 노트북 생성 또는 기존 노트북 열기:
    • 새 노트북을 만들려면 웹 인터페이스의 오른쪽 상단에 있는 “New” 버튼을 클릭하고 “Python 3”을 선택합니다.
    • 기존 노트북을 열려면 파일 목록에서 원하는 .ipynb 파일을 클릭합니다.

Jupyter Notebook이 실행되면 코드 작성, 실행, 데이터 분석 등의 작업을 수행할 수 있습니다.

3.1 Jupyter Notebook 단축키 가이드

자세한 것은 공식 문서를 참고하세요.

3.1.1 1. 셀 선택 모드 (Command Mode)

esc 또는 ctrl + m를 눌러 셀이 파란색이 된 상태에서 사용

  • 위로 셀 추가: a
  • 아래로 셀 추가: b
  • 선택 셀 삭제: d d (d를 두번 누름)
  • 선택 셀 잘라내기 (삭제로 써도 무방): x
  • 선택 셀 복사하기: c
  • 선택 셀 아래에 붙여넣기: v
  • 선택 셀과 아래 셀과 합치기: shift + m
  • 실행결과 열기/닫기: o
  • Markdown으로 변경: m
  • Code로 변경: y
  • 파일 저장: ctrl + s 또는 s
  • 선택 셀의 코드 입력 모드로 돌아가기: enter

3.1.2 2. 코드 입력 모드 (Edit Mode)

enter를 눌러 셀이 초록색이 된 상태에서 사용

  • 선택 셀의 코드 전체 선택: ctrl + a
  • 선택 셀 내 실행 취소: ctrl + z
  • 선택 셀 내 다시 실행: ctrl + y
  • 커서 위치 라인 주석처리: ctrl + /
  • 선택 셀 코드 실행: ctrl + enter
  • 선택 셀 코드 실행 후 다음 Cell로 이동 (없으면 새로 추가): shift + enter
  • 커서 위치에서 셀 둘로 나누기: shift + ctrl + -
  • 파일 저장: ctrl + s
  • 셀 선택 모드로 돌아가기: esc 또는 ctrl + m

4 활용 사례: 데이터 분석, 머신러닝 및 교육 분야

Jupyter Notebook은 연구 및 교육에서 매우 다양한 방식으로 활용되고 있습니다.

4.1 코드셀 실행 예제

4.1.1 Bouncing Ball 시뮬레이션

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd


def bouncing_ball(g, h0, v0, cor, t_max, dt):
    t = np.arange(0, t_max, dt)
    h = np.zeros_like(t)
    v = np.zeros_like(t)

    h[0] = h0
    v[0] = v0

    for i in range(1, len(t)):
        v[i] = v[i - 1] - g * dt
        h[i] = h[i - 1] + v[i] * dt

        if h[i] < 0:
            h[i] = 0
            v[i] = -cor * v[i - 1]

    return t, h


# 시뮬레이션 매개변수
g = 9.8  # 중력 가속도 (m/s^2)
h0 = 1.0  # 초기 높이 (m)
v0 = 0  # 초기 속도 (m/s)
cor = 0.8  # 반발 계수
t_max = 3.0  # 시뮬레이션 시간 (s)
dt = 0.001  # 시간 간격 (s)

# 시뮬레이션 실행
t, h = bouncing_ball(g, h0, v0, cor, t_max, dt)

# 그래프 그리기
plt.figure(figsize=(5, 3))
plt.plot(t, h)
plt.title("Bouncing Ball")
plt.xlabel("time (ms)")
plt.ylabel("height")
plt.grid(True)
plt.ylim(0, 1.1)
plt.show()

# CSV 파일로 저장
df = pd.DataFrame({"time(ms)": t, "height": h})
df.head()
# df.to_csv('bouncing_ball_data.csv', index=False)

time(ms) height
0 0.000 1.000000
1 0.001 0.999990
2 0.002 0.999971
3 0.003 0.999941
4 0.004 0.999902

4.1.2 붓꽃 데이터 시각화

Iris 데이터셋을 분석하며, 기초적인 데이터 시각화 및 탐색에 대한 예제를 제공합니다. 예를 들어, 아래와 같은 코드를 작성하여 Iris 데이터셋의 꽃잎 길이와 너비를 시각화할 수 있습니다:

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris

# 아이리스 데이터셋 로드
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df["species"] = pd.Categorical.from_codes(iris.target, iris.target_names)

# 산점도 그리기
plt.figure(figsize=(5, 5))
colors = {"setosa": "red", "versicolor": "green", "virginica": "blue"}
for species, group in df.groupby("species", observed=True):
    plt.scatter(
        group["sepal length (cm)"], group["sepal width (cm)"], label=species, color=colors[species]
    )

plt.title("Iris Sepal Length vs Width")
plt.xlabel("Sepal Length (cm)")
plt.ylabel("Sepal Width (cm)")
plt.legend()
plt.show()

4.2 매직 명령어(Magic commands)

주피터 노트북에서 매직 명령어는 코드 실행을 단순화하고 노트북의 기능을 확장하는 데 유용한 특별한 명령어입니다. 매직 명령어는 두 가지 유형으로 나뉩니다:

  1. 라인 매직 명령어: ’%’로 시작하며 한 줄에 적용됩니다.
  2. 셀 매직 명령어: ’%%’로 시작하며 전체 셀에 적용됩니다.

4.2.1 주요 매직 명령어

4.2.1.1 라인 매직 명령어

  • %time: 특정 코드의 실행 시간을 측정합니다.
  • %timeit: 코드를 여러 번 실행하여 평균 실행 시간을 측정합니다.
  • %lsmagic: 사용 가능한 모든 매직 명령어를 나열합니다.
  • %matplotlib inline: matplotlib 그래프를 인라인으로 표시합니다.
  • %load: 외부 스크립트 파일을 현재 셀에 불러옵니다.
  • %pwd: 현재 노트북의 디렉토리 정보를 출력합니다.
  • %ls: 현재 디렉토리의 목록을 출력합니다.

4.2.1.2 셀 매직 명령어

  • %%time: 셀 전체의 실행 시간을 측정합니다.
  • %%timeit: 셀 전체를 여러 번 실행하여 평균 실행 시간을 측정합니다.
  • %%writefile: 셀의 내용을 파일로 저장합니다.
  • %%capture: 셀의 출력을 캡처하여 변수에 저장합니다.
  • %%bash: 셀에서 bash 명령어를 실행합니다.
  • %%html: HTML 코드를 실행하고 렌더링합니다.
  • %%latex: LaTeX 코드를 실행하고 렌더링합니다.

4.2.2 사용 예시

  1. 파일 저장: %%writefile sample.py로 시작하는 셀의 내용을 ‘sample.py’ 파일로 저장할 수 있습니다.
  2. 코드 실행 시간 측정: %time sum(range(1000000))로 특정 연산의 실행 시간을 측정할 수 있습니다.
  3. 외부 파일 로드: %load sample.py로 ‘sample.py’ 파일의 내용을 현재 셀에 불러올 수 있습니다.

매직 명령어의 예시로 현재 디렉토리 위치를 출력해 보겠습니다.

%pwd
'/Users/fkt/Downloads/repo/tomorrow-lab.github.io/posts/ipynb'
%timeit sum(range(100))
322 ns ± 2.13 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)

5 교육 및 연구 재현성 확보

5.1 교육용 템플릿:

Jupyter Notebook은 Markdown과 코드 셀을 결합하여 학습 자료 및 실습 자료를 제작하기 좋습니다. 코로나19 데이터 분석 예제와 같이 단계별 주석과 설명을 포함한 템플릿을 활용하면 학생들이 실습을 통해 데이터 분석 기법을 배울 수 있습니다.

5.2 연구 재현성:

Binder, JupyterHub, Docker 컨테이너를 통해 동일한 실행 환경을 재현 가능하게 만들어 연구 결과의 재현성을 높일 수 있습니다. 또한 노트북 파일과 함께 환경 구성 파일을 공유하는 방식이 흔히 사용됩니다.

5.3 다중 커널 연동:

Python과 R 커널을 함께 사용하여 상호 간 데이터를 교환하고 분석할 수 있습니다. 예를 들어 매직 명령어 %R을 사용하여 Python 데이터 프레임을 R로 전달한 다음 R의 통계 함수를 활용하는 방법도 있습니다.

6 문제 해결 가이드

  • 커널 연결 오류: Jupyter Notebook에서 커널 연결 오류가 발생했을 경우 다음 사항을 확인해야 합니다:
    • Python 버전이 Jupyter Notebook과 호환되는지 확인합니다.
    • 필요한 패키지의 종속성이 올바르게 설치되었는지 점검합니다.
    • 방화벽 설정을 확인하여 커널이 제대로 연결될 수 있도록 허용합니다.

7 마치며

Jupyter Notebook은 초보자부터 전문가까지 모두 사용할 수 있는 강력한 인터랙티브 컴퓨팅 도구입니다. Jupyter Notebook은 앞으로도 인공지능, 빅데이터, 연구 재현성 확보 등 다양한 분야에서 핵심 도구로 자리잡고 있습니다. 그러니 데이터 기반의 의사결정, 교육 자료 개발, 연구 성과 공유 등 여러 방면에서 효율적으로 적용하도록 하세요.