import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
def bouncing_ball(g, h0, v0, cor, t_max, dt):
= np.arange(0, t_max, dt)
t = np.zeros_like(t)
h = np.zeros_like(t)
v
0] = h0
h[0] = v0
v[
for i in range(1, len(t)):
= v[i - 1] - g * dt
v[i] = h[i - 1] + v[i] * dt
h[i]
if h[i] < 0:
= 0
h[i] = -cor * v[i - 1]
v[i]
return t, h
# 시뮬레이션 매개변수
= 9.8 # 중력 가속도 (m/s^2)
g = 1.0 # 초기 높이 (m)
h0 = 0 # 초기 속도 (m/s)
v0 = 0.8 # 반발 계수
cor = 3.0 # 시뮬레이션 시간 (s)
t_max = 0.001 # 시간 간격 (s)
dt
# 시뮬레이션 실행
= bouncing_ball(g, h0, v0, cor, t_max, dt)
t, h
# 그래프 그리기
=(5, 3))
plt.figure(figsize
plt.plot(t, h)"Bouncing Ball")
plt.title("time (ms)")
plt.xlabel("height")
plt.ylabel(True)
plt.grid(0, 1.1)
plt.ylim(
plt.show()
# CSV 파일로 저장
= pd.DataFrame({"time(ms)": t, "height": h})
df
df.head()# df.to_csv('bouncing_ball_data.csv', index=False)
Jupyter notebook 소개
Jupyter Notebook
은 웹 브라우저를 통해 실행되는 오픈 소스 인터랙티브 컴퓨팅 환경입니다. 코드, 텍스트, 수식, 이미지 등 다양한 형태의 콘텐츠를 하나의 문서에 통합하여 작성, 실행 및 저장할 수 있어 코딩과 문서화를 동시에 할 수 있다는 장점이 있습니다. 그리고 Python뿐 아니라 R, Julia, Scala 등 40개 이상의 프로그래밍 언어를 지원합니다. 작성한 노트북을 동료와 공유하거나 GitHub, Binder, JupyterHub 등의 플랫폼을 통해 배포할 수 있어 데이터 과학, 머신러닝 연구, 교육 및 문서화에 매우 유용합니다.
- 커널(Kernel): Jupyter Notebook에서 사용자가 입력한 코드를 실제로 실행하는 백엔드 프로세스이며 각 언어에 맞는 커널이 존재합니다. 예를 들어 Python의 경우 ipykernel이 커널로 사용됩니다
- 확장자: Jupyter Notebook은
.ipynb
확장자를 갖는 JSON 기반의 문서 형식을 사용합니다. 이 파일은 코드 셀, 마크다운 셀, 출력 결과, 메타데이터 등을 모두 포함합니다.
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을 실행하는 방법은 다음과 같습니다:
- 명령 프롬프트 또는 터미널 실행:
- Windows에서는 검색창에 “cmd”를 입력하고 엔터를 눌러 명령 프롬프트를 실행합니다.
- macOS나 Linux에서는 터미널을 엽니다.
- Jupyter Notebook 실행 명령어 입력:
명령 프롬프트나 터미널에서 다음 명령어를 입력합니다:
jupyter-lab
그러면 Jupyter Notebook 서버가 시작됩니다.
- 웹 브라우저 자동 실행:
- Jupyter Notebook 서버가 시작되면 기본 웹 브라우저가 자동으로 열리며 Jupyter Notebook 인터페이스가 표시됩니다.
- 새 노트북 생성 또는 기존 노트북 열기:
- 새 노트북을 만들려면 웹 인터페이스의 오른쪽 상단에 있는 “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 시뮬레이션
4.1.2 붓꽃 데이터 시각화
Iris 데이터셋을 분석하며, 기초적인 데이터 시각화 및 탐색에 대한 예제를 제공합니다. 예를 들어, 아래와 같은 코드를 작성하여 Iris 데이터셋의 꽃잎 길이와 너비를 시각화할 수 있습니다:
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
# 아이리스 데이터셋 로드
= load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)
df "species"] = pd.Categorical.from_codes(iris.target, iris.target_names)
df[
# 산점도 그리기
=(5, 5))
plt.figure(figsize= {"setosa": "red", "versicolor": "green", "virginica": "blue"}
colors for species, group in df.groupby("species", observed=True):
plt.scatter("sepal length (cm)"], group["sepal width (cm)"], label=species, color=colors[species]
group[
)
"Iris Sepal Length vs Width")
plt.title("Sepal Length (cm)")
plt.xlabel("Sepal Width (cm)")
plt.ylabel(
plt.legend() plt.show()
4.2 매직 명령어(Magic commands)
주피터 노트북에서 매직 명령어는 코드 실행을 단순화하고 노트북의 기능을 확장하는 데 유용한 특별한 명령어입니다. 매직 명령어는 두 가지 유형으로 나뉩니다:
- 라인 매직 명령어: ’%’로 시작하며 한 줄에 적용됩니다.
- 셀 매직 명령어: ’%%’로 시작하며 전체 셀에 적용됩니다.
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 사용 예시
- 파일 저장:
%%writefile sample.py
로 시작하는 셀의 내용을 ‘sample.py’ 파일로 저장할 수 있습니다. - 코드 실행 시간 측정:
%time sum(range(1000000))
로 특정 연산의 실행 시간을 측정할 수 있습니다. - 외부 파일 로드:
%load sample.py
로 ‘sample.py’ 파일의 내용을 현재 셀에 불러올 수 있습니다.
매직 명령어의 예시로 현재 디렉토리 위치를 출력해 보겠습니다.
%pwd
%timeit sum(range(100))
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은 앞으로도 인공지능, 빅데이터, 연구 재현성 확보 등 다양한 분야에서 핵심 도구로 자리잡고 있습니다. 그러니 데이터 기반의 의사결정, 교육 자료 개발, 연구 성과 공유 등 여러 방면에서 효율적으로 적용하도록 하세요.