Jupyter Notebook

Jupyter Notebook — интерактивная среда анализа: код, текстовые пояснения и графики в одном документе. Стандарт для data science и исследований.

Уровень: начальный 18 разделов ⏱ 2–3 часа

1. Что такое Jupyter

Проект Jupyter объединяет Notebook (браузерный редактор) и JupyterLab (IDE с файлами, терминалом и панелями). Документ — файл .ipynb из ячеек:

2. Установка

pip install jupyter
jupyter notebook        # или: jupyter lab

Альтернатива — Anaconda/Miniconda с Jupyter сразу. Запуск — из командной строки в папке проекта.

3. Основные клавиши

ДействиеКлавиша
Новая ячейкаA (выше) / B (ниже)
ВыполнитьShift+Enter
Сменить тип (Code/MD)M / Y
УдалитьD D
СохранитьCtrl+S
Каждая ячейка запоминает свои переменные: порядок выполнения важен, поэтому всегда запускай ячейки сверху вниз.

4. Кернелы

Кернел — процесс, исполняющий код ячейки. В настройках можно выбрать Python, R, Julia и другие. При перезапуске кернела (Kernel → Restart) все переменные теряются — перезапуск обязателен после установки пакетов.

Подсказка решения: переменная не видна? Ошибка «NameError» — перезапусти кернел и выполни всё по порядку (Kernel → Restart & Run All).

5. Markdown-ячейки

# Заголовок 1
## Заголовок 2

**жирный**, *курсив*, `код`

- пункт один
- пункт два

$$ x^2 + y^2 = r^2 $$   # формула LaTeX

Нажми Enter для редактирования, Shift+Enter для рендера.

6. Магические команды

%time     sum(range(10**6))          # время
%%timeit  sum(range(10**6))          # многократно
%lsmagic                           # список магий
!pip install pandas                # команда ОС

7. Графики в тетради

import matplotlib.pyplot as plt

# встраивание графиков в вывод ячейки
%matplotlib inline
plt.plot([1, 2, 3], [4, 2, 5])

Теперь любой plt.plot появляется прямо под ячейкой. Для интерактивных графиков: %matplotlib widget.

8. Сохранение и экспорт

9. JupyterLab

JupyterLab — следующая ступень: слева файловый менеджер, вкладки, терминал, несколько панелей одновременно. Частично запускается той же командой jupyter lab.

10. Лучшие практики

Тетради со случайными выходами не воспроизводимы: ставь seed случайности (np.random.seed) и перезапускай всё перед публикацией.

11. Расширения и настройка окружения

Jupyter расширяется пакетами, которые добавляют панели, автодополнение и проверку кода. Для классического Notebook ставятся классические расширения, для JupyterLab — отдельные плагины:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyterlab-git jupyterlab-spellchecker
После установки перезапусти сервер, иначе новые расширения не появятся: jupyter notebook --generate-config создаст файл конфигурации для точной настройки поведения.

12. Параметризация и автоматизация с Papermill

Papermill выполняет тетрадь «на автомате», подставляя параметры прямо в ячейку, помеченную тегом parameters. Это превращает тетрадь в переиспользуемый отчёт:

import papermill as pm
pm.execute_notebook("report.ipynb", "report_out.ipynb",
    parameters={"period": "2026-02", "region": "msk"})

Ячейка в тетради выглядит так: period = "2026-02", регион и период задаются извне, а остальной код не меняется.

Папку с выходными тетрадями держи отдельно и не коммить в Git: вход — исходник, выход — артефакт, который легко пересобрать.

13. Интерактивные виджеты

Библиотека ipywidgets добавляет слайдеры, кнопки и выпадающие списки прямо в тетрадь. Функция interact сама строит элементы управления по типам аргументов:

from ipywidgets import interact

@interact(a=(1, 100), b=(1, 100))
def multiply(a, b):
    print(a * b)

Вращая ползунки, ты мгновенно видишь результат — удобно исследовать порог, при котором модель меняет поведение:

14. Тетради в командной работе и в production

Тетрадь — JSON: диффы непонятны, а выходы раздувают историю. Комаандные практики сводятся к чистке и предсказуемости:

ЗадачаИнструмент
Очистка выходов перед коммитомnbstripout
Удобные диффы и ревьюjupytext (.py)
Перезапуск всех ячеекnbconvert --execute
Публикация отчётов без кодаVoilà
Не храни секреты прямо в ячейках: API-ключи попадут в историю ноутбука и в Git. Выноси их в переменные окружения и читай через os.getenv.

15. Удалённый сервер и совместный доступ

Тетради удобно держать на сервере или в Docker и открывать их из любого браузера. Запуск на удалённой машине без локального GUI:

jupyter server --no-browser --ip=0.0.0.0 --port=8888

При первом старте в консоли печатается токен — URL с ?token=… открывает тетрадь даже без пароля. Токены не любят разглашения: за туннелем наружу ты сразу отдашь доступ к процессу.

Не оставляй сервер с --ip=0.0.0.0 открытым в интернете без HTTPS и токена — это готовая точка входа злоумышленника в окружение с вычислениями.

16. Отладка и профилирование кода

Ошибиться в тетради легко, а вот понять, где падает — сложнее. Среда даёт полноценный отладчик прямо в ячейке:

%debug          # войти в отладчик после исключения
%pdb on         # включать отладчик автоматически
%prun my_func() # профиль по вызовам функций

Команды отладчика — как в pdb: n (следующий шаг), s (шаг внутрь), p var (печать значения), q (выход).

Типичный сценарий: исключение → активируй %debug → осмотри локальные переменные на месте падения → исправь причину, а не симптом.

17. Оформление отчётов: LaTeX и презентации

Markdown-ячейки и $…$ решают только простые формулы. Полноценные материалы собирают в документы:

pip install jupyter-book rise

Формулы набираются стандартно: \frac{1}{n}\sum x_i, нумерованный вывод — \begin{equation}…\end{equation}.

Не пиши формулы «в лоб» в Markdown: строй их через LaTeX-окружения с логичной структурой, иначе после третьей итерации отчёт перестанут читать коллеги.

18. Jupyter в VS Code и Google Colab

Тетради — кросс-инструментальный формат: один и тот же .ipynb открывается везде. Сравнение самых частых сред:

СредаСильные стороныОграничения
JupyterLabпанели, расширения, локальный кернелтребует настройки сервера
VS Codeинтеграция с Git, отладчик, IntelliSenseсреда тяжелее, кернел настраивается через интерфейс
Google Colabбесплатный GPU, общий чат-URL, готовые пакетылимиты времени, данные в облаке

В VS Code тетрадь редактируется с автодополнением и дебагом; ячейки подсвечивают ошибки до запуска. Colab удобен для экспериментов и обучения, но не для работы с приватными данными.

Держи исходный файл в JupyterLab, а вложенные машины (Colab, Kaggle) используй как «вычислительные аренды» — код остаётся один, окружения разные.

19. Виртуальные окружения и изолированные ядра

Частый источник «разъехавшихся» ноутбуков — общее окружение: вчера обновили пакет, и старый эксперимент перестал запускаться. Для каждого проекта выделяйте отдельную среду и регистрируйте её как собственное ядро Jupyter.

conda create -n ml python=3.11
conda activate ml
python -m ipykernel install --user --name ml --display-name "ML 3.11"
Выносите environment.yml в репозиторий проекта: коллега воспроизведёт окружение одной командой и получит те же версии pandas и numpy.

20. SQL прямо в тетради

Расширение ipython-sql превращает ячейку в SQL-консоль: вы не выходите из ноутбука, чтобы проверить гипотезу на данных.

pip install ipython-sql
%load_ext sql
%sql postgresql://user:pass@host:5432/db
%%sql
SELECT city, count(*) FROM orders GROUP BY city;
Не храните пароли прямо в ячейках — используйте переменные окружения или файл .env, иначе секреты уедут в git-историю вместе с тетрадью.

21. Распараллеливание вычислений

Тетрадь не обязана быть однопоточным скриптом: независимые запуски (бутстрап, фолды кросс-валидации, сетка гиперпараметров) легко разносить по ядрам CPU.

from joblib import Parallel, delayed
scores = Parallel(n_jobs=8)(delayed(train)(fold) for fold in folds)
Большие модели и GPU-тензоры не ускоряются multiprocessing: память на ядро умножается кратно числу процессов.

22. Чек-лист воспроизводимого эксперимента

Ноутбук должен в любой момент вернуть результат, который повторит коллега или будущий вы. Соберите минимальный набор правил.

Перед сдачей результата прогоните тетрадь начисто: Kernel → Restart & Run All. Это лучший тест на скрытые состояния и порядок выполнения.

Что дальше

Весь стек анализа живет в Jupyter: Pandas, Matplotlib, Seaborn, Scikit-Learn.

← Вернуться к курсам