Cursor AI를 Jupyter Notebooks와 함께 사용하는 방법 (2026)
Cursor를 활용한 AI 지원 데이터 사이언스 및 노트북 개발
Hypereal로 구축 시작하기
단일 API를 통해 Kling, Flux, Sora, Veo 등에 액세스하세요. 무료 크레딧으로 시작하고 수백만으로 확장하세요.
신용카드 불필요 • 10만 명 이상의 개발자 • 엔터프라이즈 지원
Cursor AI와 Jupyter Notebook 함께 사용하는 방법 (2026)
Cursor AI는 현재 사용 가능한 최고의 AI 기반 코드 에디터 중 하나이지만, Jupyter Notebook 지원 기능이 즉각적으로 눈에 띄지는 않습니다. Notebook 환경에서 작업하는 데이터 사이언티스트, ML 엔지니어 또는 분석가라면, 이 가이드를 통해 .ipynb 파일에서 Cursor의 AI 기능을 최대한 활용하는 방법을 알아볼 수 있습니다.
이 가이드에서는 설정 방법, AI 지원 Notebook 개발을 위한 최적의 워크플로우, 그리고 기존 Jupyter 환경보다 Cursor를 훨씬 빠르게 만들어주는 실용적인 팁을 다룹니다.
Cursor는 Jupyter Notebook을 지원하나요?
네, 지원합니다. Cursor는 VS Code를 기반으로 제작되었으며, VS Code는 네이티브 Jupyter Notebook 지원 기능을 갖추고 있습니다. Cursor에서 .ipynb 파일을 열면 대화형 셀, 인라인 출력, 차트, Markdown 셀 등 모든 Notebook 환경을 그대로 사용할 수 있으며, 그 위에 Cursor의 모든 AI 기능이 더해집니다.
| 기능 | Cursor + Jupyter | JupyterLab | VS Code + Jupyter |
|---|---|---|---|
| 대화형 셀 | 지원 | 지원 | 지원 |
| 인라인 차트 | 지원 | 지원 | 지원 |
| AI 코드 생성 | 지원 (Claude/GPT) | 미지원 | 제한적 (Copilot) |
| 컨텍스트 기반 AI 채팅 | 지원 | 미지원 | 제한적 |
| 에이전트 모드 | 지원 | 미지원 | 미지원 |
| 변수 조사기 (Variable inspector) | 지원 | 지원 | 지원 |
| 커널 관리 | 지원 | 지원 | 지원 |
| 확장 프로그램 | VS Code 생태계 | JupyterLab 확장 프로그램 | VS Code 생태계 |
JupyterLab과 비교했을 때 Cursor의 가장 큰 장점은 코드를 생성하거나 질문에 답할 때 AI가 Notebook의 전체 컨텍스트(모든 셀, 출력 결과, 임포트된 라이브러리)를 이해한다는 점입니다.
1단계: Jupyter를 위한 Cursor 설정
필수 구성 요소 설치
Python과 Jupyter가 설치되어 있는지 확인하세요:
# Python 설치 (아직 설치되지 않은 경우)
# macOS
brew install python@3.12
# Jupyter 및 주요 데이터 과학 라이브러리 설치
pip install jupyter ipykernel pandas numpy matplotlib seaborn scikit-learn
Jupyter 확장 프로그램 설치
Cursor는 VS Code의 확장 프로그램 생태계를 그대로 이어받습니다. Jupyter 확장 프로그램은 보통 기본으로 설치되어 있지만, 다음 순서대로 확인해 보세요:
- Cursor를 엽니다.
- Extensions (Cmd+Shift+X / Ctrl+Shift+X)로 이동합니다.
- "Jupyter"를 검색하고, 설치되어 있지 않다면 Microsoft의 공식 Jupyter 확장 프로그램을 설치합니다.
- 완전한 언어 지원을 위해 Microsoft의 "Python" 확장 프로그램도 함께 설치하세요.
Python 커널 선택
- Cursor에서
.ipynb파일을 열거나 생성합니다. - Notebook 오른쪽 상단의 Select Kernel을 클릭합니다.
- Python Environments를 선택하고 설치된 Python 버전이나 가상 환경을 선택합니다.
# 프로젝트를 위한 전용 가상 환경 생성
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
# 프로젝트 의존성 설치
pip install jupyter ipykernel pandas numpy matplotlib
# 커널 등록
python -m ipykernel install --user --name myproject --display-name "My Project"
2단계: Notebook에서 Cursor AI 기능 사용하기
인라인 코드 생성 (Cmd+K / Ctrl+K)
Notebook 셀에서 AI를 사용하는 가장 빠른 방법은 Cursor의 인라인 생성 기능입니다. 빈 셀에 커서를 두고 Cmd+K (macOS) 또는 Ctrl+K (Windows/Linux)를 누르세요.
# Cmd+K를 누르고 입력: "load the titanic dataset and show basic statistics"
# Cursor가 생성한 코드:
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')
print(f"Shape: {df.shape}")
print(f"\nColumn types:\n{df.dtypes}")
print(f"\nBasic statistics:\n{df.describe()}")
print(f"\nMissing values:\n{df.isnull().sum()}")
또한 기존 코드를 선택하고 Cmd+K를 눌러 수정할 수도 있습니다:
# 이 코드를 선택하고 Cmd+K를 눌러 입력: "add error handling and make it a reusable function"
# 원본:
df = pd.read_csv('data.csv')
df = df.dropna()
df['age_group'] = pd.cut(df['age'], bins=[0, 18, 35, 50, 100])
# Cursor가 다음과 같이 변환합니다:
def load_and_preprocess(filepath: str, age_bins: list = None) -> pd.DataFrame:
"""CSV 데이터를 로드하고 결측치를 처리하며 연령대를 추가합니다."""
if age_bins is None:
age_bins = [0, 18, 35, 50, 100]
try:
df = pd.read_csv(filepath)
except FileNotFoundError:
raise FileNotFoundError(f"Data file not found: {filepath}")
initial_rows = len(df)
df = df.dropna()
dropped = initial_rows - len(df)
if dropped > 0:
print(f"Dropped {dropped} rows with missing values ({dropped/initial_rows:.1%})")
df['age_group'] = pd.cut(df['age'], bins=age_bins)
return df
채팅 패널 (Cmd+L / Ctrl+L)
Cmd+L을 눌러 채팅 패널을 열고 Notebook에 대해 Cursor와 대화하세요. AI는 셀 출력 결과를 포함한 Notebook 전체를 볼 수 있습니다.
데이터 과학 워크플로우를 위한 프롬프트 예시:
- "3번 셀의 출력을 봐줘. 왜 정확도가 이렇게 낮을까?"
- "7번 셀의 차트가 읽기 힘들어. 시각화를 개선해줘."
- "12번 셀의 모델에 대해 교차 검증 그리드 탐색(cross-validated grid search)을 수행하는 함수를 작성해줘."
- "SettingWithCopyWarning이 발생하고 있어. 해결해줘."
에이전트 모드 (Cmd+I / Ctrl+I)
에이전트 모드는 Notebook에서 가장 강력한 기능입니다. 새 셀을 생성하고, 기존 셀을 편집하며, 다단계 데이터 과학 워크플로우를 직접 실행할 수 있습니다.
프롬프트: "1번 셀에서 로드한 데이터셋에 대해 완전한 EDA를 수행해줘. 수치형 컬럼의 분포 플롯, 상관관계 히트맵, 결측치 분석, 그리고 주요 발견 사항을 Markdown으로 요약하여 각각 별도의 셀로 만들어줘."
에이전트 모드는 적절한 코드와 Markdown이 포함된 4~5개의 새로운 셀을 Notebook에 생성합니다.
3단계: 실용적인 워크플로우
워크플로우 1: 탐색적 데이터 분석 (EDA)
EDA 코드를 수동으로 작성하는 대신, Cursor를 사용하여 단계별로 생성하세요.
# 1번 셀: 데이터 로드 (직접 작성)
import pandas as pd
df = pd.read_csv('sales_data.csv')
df.head()
그 다음 채팅 패널에서:
프롬프트: "위의 데이터프레임 출력을 참고해서 다음 셀들에 전체 EDA를 생성해줘:
1. 데이터 타입 및 결측치 요약
2. 수치형 컬럼의 분포 (히스토그램)
3. 상관계수 행렬 히트맵
4. 주요 범주형 값의 빈도수
5. 날짜 컬럼이 있다면 시계열 플롯"
Cursor는 특정 데이터프레임 컬럼에 맞춰 최적화된 코드로 5개의 셀을 모두 생성합니다.
워크플로우 2: 오류 디버깅
셀에서 오류가 발생하면 오류 출력 내용을 선택하고 Cursor에게 수정을 요청하세요.
# 이 셀에서 다음 오류 발생: ValueError: could not convert string to float: 'N/A'
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train) # 여기서 오류 발생
오류를 선택하고 Cmd+L을 누릅니다:
프롬프트: "이 오류를 고쳐줘. 훈련 데이터에 처리가 필요한 문자열 값이 있어."
Cursor는 전체 컨텍스트를 고려하여 수정안을 제안합니다:
# Cursor의 수정안:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import LabelEncoder
import numpy as np
# 수치형이 아닌 값 처리
X_train_clean = X_train.copy()
for col in X_train_clean.select_dtypes(include=['object']).columns:
X_train_clean[col] = X_train_clean[col].replace('N/A', np.nan)
X_train_clean[col] = pd.to_numeric(X_train_clean[col], errors='coerce')
# 남은 NaN 값 채우기
X_train_clean = X_train_clean.fillna(X_train_clean.median())
model = LinearRegression()
model.fit(X_train_clean, y_train)
워크플로우 3: 모델 반복 개선
채팅을 통해 모델 성능을 개선하세요.
# 셀 출력 결과: Accuracy: 0.72, F1: 0.68
프롬프트: "모델 정확도가 0.72야. 이를 개선하기 위한 3가지 다른 접근 방식을 제안하고 구현해줘. 각 방식에 대해 새 셀을 만들고 마지막 요약 셀에서 결과를 비교해줘."
워크플로우 4: 시각화 정교화
기본 차트 기능을 생성한 후 AI로 다듬으세요.
# 기본 차트
df['sales'].plot()
프롬프트: "이 차트를 발표용으로 만들어줘. 적절한 라벨, 제목, 범례를 추가하고, 깔끔한 스타일을 사용해줘. 추세선을 추가하고 최고점에 주석을 달아줘."
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
fig, ax = plt.subplots(figsize=(12, 6))
# 데이터 플롯
ax.plot(df.index, df['sales'], color='#2563eb', linewidth=1.5, label='Daily Sales')
# 추세선 추가
z = np.polyfit(range(len(df)), df['sales'], 1)
p = np.poly1d(z)
ax.plot(df.index, p(range(len(df))), '--', color='#dc2626', linewidth=1, label='Trend')
# 최고점 주석 달기
peak_idx = df['sales'].idxmax()
peak_val = df['sales'].max()
ax.annotate(f'Peak: ${peak_val:,.0f}',
xy=(peak_idx, peak_val),
xytext=(10, 20), textcoords='offset points',
fontsize=10, fontweight='bold',
arrowprops=dict(arrowstyle='->', color='#374151'))
ax.set_title('Daily Sales Performance', fontsize=16, fontweight='bold', pad=15)
ax.set_xlabel('Date', fontsize=12)
ax.set_ylabel('Sales ($)', fontsize=12)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tight_layout()
plt.show()
Notebook에서 더 나은 AI 결과를 얻기 위한 팁
1. 셀 출력 결과 유지하기
Cursor는 데이터를 이해하기 위해 셀 출력 결과를 읽습니다. AI에게 질문하기 전에 항상 셀을 실행하여 AI가 실제 데이터의 형태(shape), 컬럼명, 오류 메시지를 볼 수 있도록 하세요.
2. Markdown 셀을 컨텍스트로 활용하기
수행하려는 작업에 대한 설명을 Markdown 셀로 추가하세요. Cursor는 이를 컨텍스트로 사용합니다.
## 목표
통신사 데이터셋을 사용하여 고객 이탈을 예측합니다. 타겟 변수는 'Churn'입니다.
프로덕션 배포를 위해 최소 85%의 정확도가 필요합니다.
3. 특정 셀 참조하기
채팅을 사용할 때 구체적인 셀을 언급하세요.
- "5번 셀에서 병합(merge) 시 중복이 발생하고 있어. 수정해줘."
- "3번 셀에서 정제한 데이터프레임을 사용해서 랜덤 포레스트를 훈련시켜줘."
4. 복잡한 로직은 `.py` 파일 사용하기
복잡한 유틸리티 함수는 별도의 .py 파일을 만들어 임포트하세요. Cursor AI는 복잡한 코드의 경우 표준 Python 파일에서 더 잘 작동하며, Notebook은 전체적인 흐름 제어와 시각화에 가장 적합합니다.
# utils/preprocessing.py (Cursor AI가 여기서 아주 잘 작동합니다)
def clean_dataset(df):
...
# notebook.ipynb
from utils.preprocessing import clean_dataset
df_clean = clean_dataset(df)
Cursor vs JupyterLab vs Google Colab
| 기준 | Cursor + Jupyter | JupyterLab | Google Colab |
|---|---|---|---|
| AI 코드 생성 | 매우 우수 | 기본 기능 없음 | Gemini 탑재 |
| 오프라인 지원 | 지원 | 지원 | 미지원 |
| GPU 액세스 | 로컬만 가능 | 로컬만 가능 | 무료 GPU 제공 |
| 협업 | Git 기반 | JupyterHub | 실시간 공유 |
| 확장 프로그램 생태계 | VS Code (방대함) | Jupyter (상대적으로 작음) | 제한적 |
| 성능 | 빠름 (로컬) | 빠름 (로컬) | 가변적 (클라우드) |
| 비용 | 월 $20 (Pro) 또는 무료 플랜 | 무료 | 무료 + 유료 플랜 |
자주 묻는 질문 (FAQ)
Cursor 무료 플랜에서도 Jupyter Notebook을 사용할 수 있나요? 네, 가능합니다. 무료 Hobby 플랜에는 매달 50회의 빠른 프리미엄 요청이 포함되어 있으며, 이를 Notebook에서 사용할 수 있습니다.
Cursor는 .py 퍼센트 형식(percent-format) Notebook을 지원하나요?
네, 지원합니다. Cursor는 표준 .ipynb 파일과 # %% 셀 마커가 있는 .py 파일(퍼센트 형식)을 모두 지원합니다. AI 기능은 두 형식 모두에서 작동합니다.
Cursor가 차트 출력 결과를 읽을 수 있나요? Cursor는 텍스트 출력과 데이터프레임 표시를 볼 수 있습니다. 차트의 경우, 해당 차트를 생성한 코드를 읽고 개선 사항을 제안할 수는 있지만, 렌더링된 차트 이미지를 시각적으로 분석하지는 못합니다.
대용량 데이터셋은 어떤가요?
Cursor AI는 데이터를 컨텍스트로 직접 로드하지 않습니다. 대신 코드와 셀 출력 결과를 읽습니다. 대용량 데이터셋의 경우, df.head(), df.describe()와 같은 출력 결과를 통해 AI가 데이터 구조를 충분히 이해할 수 있도록 정보를 제공하세요.
마치며
Cursor는 Jupyter Notebook을 단순한 수동 코딩 환경에서 AI 지원 데이터 과학 워크플로우로 변화시킵니다. 인라인 생성, Notebook 컨텍스트 기반 채팅, 그리고 에이전트 모드의 조합은 탐색적 분석, 모델 구축, 시각화 속도를 현저히 높여줍니다.
핵심은 셀 출력 결과를 유지하고, Markdown 셀로 컨텍스트를 제공하며, AI와 채팅할 때 특정 셀을 참조하는 것입니다. 이를 통해 Cursor가 정확하고 컨텍스트에 맞는 코드를 생성하는 데 필요한 정보를 제공할 수 있습니다.
데이터 과학 프로젝트에 AI 생성 이미지나 비디오 분석이 포함된다면, Hypereal AI를 무료로 체험해 보세요 (신용카드 불필요). Hypereal AI의 API를 사용하면 Python 워크플로우와 Notebook에 AI 미디어 생성 기능을 쉽게 통합할 수 있습니다.
