Jupyter Notebook 참고 자료

필수 단축키 및 마법 명령어

Page content

Jupyter Notebook 생산성을 극대화하기 위해 필수적인 단축키, 마직기 명령어 및 워크플로우 팁을 활용해 보세요. 이는 데이터 과학 및 개발 경험을 획기적으로 개선할 것입니다.

jupyter notebook ui

Jupyter Notebook은 상호작용형 컴퓨팅, 데이터 분석 및 머신러닝 워크플로우에 대한 표준이 되었습니다. Python을 사용하여 데이터 과학을 수행하거나 AI 모델을 실험하거나 코드 프로토타입을 만들 때, Jupyter의 키보드 단축키와 마직기 명령어를 숙련하면 생산성이 크게 향상됩니다.

이 가이드는 Jupyter 사용자가 반드시 알아야 할 가장 필수적인 명령어와 단축키를 다룹니다. 기본 셀 네비게이션부터 워크플로우를 간소화하는 고급 마직기 명령어까지. Python 개발에 새로 시작하신 분이라면, Python 가이드도 함께 참조하시면 Jupyter 셀 내에서 원활하게 작동하는 Python 언어 구조를 이해하는 데 도움이 될 것입니다.

명령 모드와 편집 모드 이해

Jupyter Notebook은 키보드 단축키가 사용 가능한 두 가지 다른 모드에서 작동합니다:

  • 명령 모드 (Esc를 눌러 활성화): 셀 생성, 삭제, 변환과 같은 셀 수준의 작업을 제어
  • 편집 모드 (Enter를 눌러 활성화): 셀 내부의 콘텐츠를 편집

기억해야 할 가장 중요한 단축키는 명령 모드에서 H를 누르면 전체 키보드 단축키 도움말 대화상자가 표시됩니다. 특정 단축키를 잊었을 때의 빠른 참고 자료입니다.

필수 명령 모드 단축키

셀 이동 및 실행

Jupyter의 핵심 워크플로우는 셀을 효율적으로 실행하는 데 집중됩니다:

  • Shift + Enter: 현재 셀 실행 후 아래 셀 선택. 이는 코드를 순차적으로 실행하는 데 가장 자주 사용되는 단축키입니다.
  • Ctrl + Enter: 현재 셀 실행 후 다음 셀로 이동하지 않음. 여러 번 다시 실행하려는 경우에 이상적입니다.
  • Alt + Enter: 현재 셀 실행 후 아래에 새 셀 삽입. 자주 새 셀을 추가해야 하는 반복적인 개발에 이상적입니다.

셀 관리

노트북 구조를 효율적으로 관리하는 것은 깔끔하고 정리된 노트북을 유지하는 데 매우 중요합니다:

  • A: 현재 셀 위에 새 셀 삽입
  • B: 현재 셀 아래에 새 셀 삽입
  • D, D (D를 두 번 누름): 현재 셀 삭제. 주의가 필요합니다!
  • Z: 마지막 셀 삭제 실행 취소. 중요한 셀을 실수로 삭제했을 때 구원이 됩니다.
  • Shift + M: 선택된 셀 병합. Shift + J 또는 Shift + K를 사용하여 여러 셀을 선택한 후 병합합니다.

셀 유형 변환

문서화된 노트북을 만들기 위해 셀 유형을 빠르게 전환하는 것이 필수적입니다:

  • Y: 셀을 코드 유형으로 전환
  • M: 셀을 마크다운 유형으로 전환
  • R: 셀을 원시 유형으로 전환 (실행되지 않음, 메모에 유용)
  • 1부터 6까지: 헤딩 레벨 1부터 6으로 전환하여 구조화된 문서화 가능

커널 운영

장시간 실행되는 계산이나 디버깅 시 커널 제어가 필수적입니다:

  • I, I (I를 두 번 누름): 커널 중단. 실행 중인 계산을 중단해야 할 때 매우 중요합니다.
  • 0, 0 (0을 두 번 누름): 커널 재시작. 모든 변수를 지우고 새로 시작해야 할 때 사용합니다.

표시 및 이동

  • L: 현재 셀의 줄 번호 토글. 디버깅 및 특정 줄 참조에 유용합니다.
  • O: 셀 출력 토글. 노트북을 제시할 때 깔끔하게 유지하기 위해 출력을 숨깁니다.
  • H: 키보드 단축키 도움말 대화상자 표시

필수 편집 모드 단축키

셀 내부에서 코드를 편집할 때, 이 단축키는 일반 텍스트 편집기의 기능과 유사합니다:

텍스트 편집

  • Tab: 코드 자동 완성 또는 들여쓰기. Jupyter의 자동 완성 기능은 강력하고 맥락에 따라 작동합니다.
  • Shift + Tab: 커서 아래의 객체에 대한 툴팁/문서 표시. 노트북을 떠나지 않고 API를 탐색하는 데 매우 유용합니다.
  • Ctrl + ]: 선택된 줄 들여쓰기
  • Ctrl + [: 선택된 줄 빼기
  • Ctrl + /: 선택된 줄에 주석 토글. 디버깅 중 코드를 빠르게 주석 처리하는 데 필수적입니다.

이동

  • Ctrl + A: 셀 내부의 모든 텍스트 선택
  • Ctrl + Z: 실행 취소
  • Ctrl + Shift + Z 또는 Ctrl + Y: 다시 실행
  • Ctrl + Home: 셀 시작으로 이동
  • Ctrl + End: 셀 끝으로 이동
  • Ctrl + Left: 커서 한 단어 왼쪽으로 이동
  • Ctrl + Right: 커서 한 단어 오른쪽으로 이동

모드 전환

  • Esc: 명령 모드로 전환 (편집 모드에서)

마직기 명령어: 워크플로우 강화

마직기 명령어는 Jupyter의 기능을 확장하는 특별한 지시문입니다. 두 가지 유형으로 나뉩니다: 라인 마직기 (%로 시작)는 단일 줄에서 작동하고, 셀 마직기 (%%로 시작)는 전체 셀에서 작동합니다.

성능 프로파일링

코드 성능을 이해하는 것은 최적화에 매우 중요합니다. Jupyter은 내장된 타이밍 명령어를 제공합니다:

# 단일 실행 시간 측정
%time sum(range(1000000))

# 여러 실행 시간 측정 및 평균화 (더 정확함)
%timeit sum(range(1000000))

# 전체 셀 시간 측정
%%time
total = 0
for i in range(1000000):
    total += i

%timeit 명령어는 특히 코드를 여러 번 실행하고 실행 시간에 대한 통계 정보를 제공하므로, 동일한 문제에 대한 다양한 접근 방식을 벤치마킹하는 데 이상적입니다.

외부 스크립트 실행

%run 마직기는 노트북 내에서 외부 Python 스크립트를 실행할 수 있게 해서, 코드를 모듈화하는 것이 매우 간단해집니다:

%run my_script.py

이것은 더 큰 프로젝트에서 재사용 가능한 함수를 별도의 파일에 보관할 때 특히 유용합니다. Python 환경을 관리하고 있다면, uvvenv와 같은 도구를 사용하고 있을 수 있으며, %run은 이러한 설정과 원활하게 작동합니다.

패키지 관리

노트북에서 직접 Python 패키지를 설치 및 관리할 수 있습니다:

!pip install numpy pandas matplotlib
!conda install scipy

이렇게 하면 터미널과 노트북 사이로 전환할 필요가 없어져 개발 워크플로우가 간소화됩니다. ! 접두사는 셀 내에서 쉘 명령을 실행하게 하며, 이에 대해 아래에서 더 자세히 다룹니다.

시각화

matplotlib을 사용하여 데이터 시각화를 수행할 때는 다음과 같이 사용합니다:

%matplotlib inline

이 명령어는 플롯이 노트북 셀 내부에서 직접 렌더링되도록 하여 시각화 경험을 더욱 편리하게 만들어줍니다. 또한 JupyterLab에서 상호작용형 플롯을 사용하려면 %matplotlib widget을 사용할 수 있습니다.

파일 작업

%%writefile 셀 마직기는 셀 내용을 파일로 작성합니다:

%%writefile example.py
def hello_world():
    print("Hello, World!")
    return True

이것은 스크립트를 생성하거나 노트북에서 직접 코드 스니펫을 저장하는 데 매우 유용합니다. 반대로, 표준 Python 파일 작업이나 쉘 명령어를 사용하여 파일을 읽을 수 있습니다.

쉘 명령어

노트북 셀에서 직접 쉘 명령어를 실행할 수 있습니다:

# 단일 줄 쉘 명령어
!ls -l
!pwd
!git status

# 다중 줄 쉘 명령어
%%bash
echo "Hello from Bash"
ls -l
find . -name "*.py" | head -10

이 통합은 노트북 환경을 떠나지 않고 파일 관리, 버전 제어 작업, 시스템 관리 작업을 수행하는 데 매우 강력합니다.

사용 가능한 마직기 탐색

사용 가능한 모든 마직기 명령어를 탐색하려면 다음과 같이 사용합니다:

# 모든 마직기 명령어 목록
%lsmagic

# 특정 마직기에 대한 도움
%timeit?
%matplotlib?

어떤 마직기 명령어 뒤에 ? 연산자를 사용하면 해당 명령어의 문서, 매개변수, 사용 예시를 표시합니다. 이는 Jupyter의 기능을 상호작용적으로 탐색하는 데 매우 효과적입니다.

고급 팁 및 최선의 실천 방법

노트북 정리

  1. 마크다운 셀을 적극적으로 사용: 잘 문서화된 노트북은 이해하고 유지하기가 더 쉽습니다. 헤딩 레벨(1-6)을 사용하여 명확한 구조를 만드세요.

  2. 각 셀이 명확한 목적을 가진 상태 유지: 각 셀은 하나의 명확한 목적을 가져야 합니다. 이는 디버깅을 더 쉽게 만들고 가독성을 향상시킵니다.

  3. 셀 실행 번호 사용: 실행 번호(예: In [1], In [2] 등)는 실행 순서를 추적하는 데 도움이 되며, 셀이 순서대로 실행되지 않을 경우 특히 중요합니다.

대규모 노트북 작업

노트북이 커지면 다음 기술을 사용하여 조직을 유지하는 것이 도움이 됩니다:

  • 사용 가능한 경우, 표지 목록 확장 기능을 사용하여 탐색
  • 관련 섹션을 별도의 노트북으로 분리
  • %%writefile을 사용하여 재사용 가능한 코드를 Python 모듈로 추출
  • 정기적으로 커널을 재시작하고 모든 셀을 실행하여 재현 가능성을 보장

다른 도구와의 통합

Jupyter 노트북은 현대 Python 도구와 잘 작동합니다. LLM과 함께 구조화된 출력이 필요한 경우, 노트북을 Ollama를 사용한 구조화된 LLM 출력와 같은 도구와 통합할 수 있습니다. 웹 스크래핑 및 데이터 처리를 위해 HTML을 마크다운으로 변환하는 라이브러리를 사용하는 경우, HTML을 마크다운으로 변환하는 가이드를 참조할 수 있습니다.

디버깅 워크플로우

  1. 예외 발생 후 %debug 마직기를 사용하여 디버거에 진입
  2. %pdb on을 사용하여 예외 발생 시 자동으로 디버거에 진입
  3. 출력 문과 %timeit은 성능 병목 현상을 식별하는 데 도움이 됨
  4. 변수가 예상치 못한 상태가 되었을 때 커널을 재시작 (0, 0)

커스터마이징

Jupyter 노트북 메뉴에서 HelpKeyboard Shortcuts로 이동하여 키보드 단축키를 커스터마이징할 수 있습니다. 이는 특정 워크플로우 선호도에 맞게 환경을 맞춤화할 수 있게 해줍니다.

결론

Jupyter 노트북 단축키와 마직기 명령어를 숙련하면 단순한 코드 편집기에서 강력한 상호작용형 컴퓨팅 환경으로 변신시킬 수 있습니다. 가장 자주 사용되는 단축키(Shift+Enter, Esc, A, B, D+D, M, Y)부터 시작해 점차 마직기 명령어를 워크플로우에 통합해 보세요. 이러한 명령어를 배우는 데 투자한 시간은 생산성과 워크플로우 효율성에 큰 이점을 줍니다.

기억하세요: 명령 모드에서 H를 누르면 언제든지 전체 단축키 참고 자료를 볼 수 있고, %lsmagic을 사용하여 사용 가능한 모든 마직기 명령어를 탐색할 수 있습니다. 즐거운 코딩이 되세요!

유용한 링크

외부 참고 자료