Jupyter Notebook: шпаргалка

Что такое Jupyter

Jupyter Notebook — интерактивная среда для Python (и других языков). Стандарт для аналитиков и data scientists.

Основные плюсы:

  • Шаг-за-шагом: видишь результат каждой ячейки.
  • Графики прямо в ноутбуке.
  • Markdown-комментарии.
  • Шаринг анализа через .ipynb файлы.

Установка

# Через pip
pip install jupyter

# Через Anaconda (рекомендуется)
conda install jupyter

# Запуск
jupyter notebook
# или
jupyter lab  # современнее

Горячие клавиши

Command Mode (нажать Esc)

Клавиша Действие
A Insert cell above
B Insert cell below
D, D Delete cell
Z Undo cell delete
M Convert to Markdown
Y Convert to Code
L Toggle line numbers
Shift + Enter Run + next
Ctrl + Enter Run + stay
Alt + Enter Run + insert below

Edit Mode (Enter)

Клавиша Действие
Tab Autocomplete
Shift + Tab Docstring (1x), full doc (2x)
Ctrl + / Комментировать строку
Ctrl + D Удалить строку

Magic commands

% — line magics (одна строка)

%matplotlib inline      # графики в ноутбуке
%timeit my_func()       # бенчмарк
%who                     # переменные в namespace
%pwd                     # текущая директория
%ls                      # содержимое
%cd path                 # перейти
%env API_KEY=xxx         # set env var
%load_ext autoreload     # автоперезагрузка модулей

%% — cell magics (вся ячейка)

%%time
# Замерить время выполнения всей ячейки
result = heavy_function()
%%writefile script.py
# Записать содержимое в файл
def hello(): print('hi')
%%bash
# Выполнить bash в ячейке
ls -la
%%sql
-- SQL прямо в ячейке (нужен ipython-sql)
SELECT * FROM users LIMIT 5;
%%html
<h1>HTML в notebook</h1>

Полезные практики

1. Imports в первой ячейке

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

%matplotlib inline
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', 100)
plt.rcParams['figure.figsize'] = (12, 6)

2. Markdown для структуры

# Анализ retention апреля 2026


Больше таких примеров с разборами — в [Telegram-тренажёре](https://t.me/kariernik_bot/app?startapp=web_blog_jupyter-notebook-shpargalka_mid1). Короткие сессии, прогресс по темам, объяснения после каждого ответа.

## Загрузка данных

Данные из таблицы `events`...

## Когортный анализ

...

Делает notebook читаемым через год.

3. Кэширование тяжёлых ячеек

import joblib

# Кэшируем результат
def load_data():
    return pd.read_sql('SELECT * FROM events', conn)

cached_load = joblib.Memory('./cache').cache(load_data)
df = cached_load()  # первый раз — медленно, потом мгновенно

4. Не запускайте ячейки вне порядка

«Запустил 3, потом 1» — namespace путается. Всегда Run All перед коммитом.

5. Чистый restart

Kernel → Restart and Run All — проверка, что notebook воспроизводим.

Display options

# Pandas
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', 50)
pd.set_option('display.width', 200)
pd.set_option('display.float_format', '{:.2f}'.format)

# Numpy
np.set_printoptions(precision=3, suppress=True)

Графики

matplotlib inline

%matplotlib inline
plt.plot([1, 2, 3])
plt.show()

Интерактивные через ipywidgets

from ipywidgets import interact

@interact(x=(0, 10))
def plot(x):
    plt.plot([1, x, x**2])
    plt.show()

Версионирование

Проблема .ipynb

Json-формат, плохо diff-ится в Git.

Решение 1: nbstripout

Удаляет outputs перед коммитом:

pip install nbstripout
nbstripout --install

Решение 2: Jupytext

Сохраняет рядом .py версию:

# %% [markdown]
# # Heading
# %%
import pandas as pd
df = pd.read_csv(...)

.py хорошо diff-ится в Git.

JupyterLab

Современная версия Jupyter:

  • Tabs.
  • Файловый менеджер.
  • Markdown preview side-by-side.
  • Variable inspector.
  • Лучше для production-like работы.
pip install jupyterlab
jupyter lab

Если готовишься к собесу — бот @kariernik_bot закрывает 80% технических вопросов. SQL, Python, A/B, продуктовые метрики — всё в одном месте.

Альтернативы

  • VS Code + Jupyter extension — лёгкая, integration с git.
  • Google Colab — облачный, бесплатный GPU.
  • Kaggle Notebooks — для соревнований и обучения.
  • Databricks Notebook — enterprise.
  • DeepNote — collaborative Jupyter.

Ошибки

1. Огромный notebook

1000 ячеек — никто не разберётся. Разбивайте на отдельные.

2. Hardcoded paths

# ❌
df = pd.read_csv('/Users/tagir/Desktop/data.csv')

# ✅
import os
df = pd.read_csv(os.environ.get('DATA_PATH', './data.csv'))

3. Outputs в Git

Используйте nbstripout. Иначе в diff попадают огромные блобы.

4. Долгие cell без логирования

%%time
# Это будет работать 10 минут — добавь print промежуточных шагов

5. Не сохранять анализ

Notebook — не финальный продукт. Перенесите ключевые выводы в Confluence / Notion / документ.

Готовый snippets для аналитика

# Quick describe
df.describe(include='all').T

# Correlation heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')

# Top N values
df['col'].value_counts().head(10).plot.bar()

# Missing visualization
import missingno as msno
msno.matrix(df)

# Cohort heatmap
cohort_pivot = df.pivot_table(...)
sns.heatmap(cohort_pivot, annot=True, fmt='.0%')

Читайте также

FAQ

Notebook или .py файл?

Notebook — для exploration, презентаций. .py — для production-кода.

JupyterLab или Notebook?

Lab современнее. Notebook проще для первых шагов.

Сохранять outputs в Git?

Если notebook — финальный отчёт, да. Если рабочий — нет (nbstripout).

Что важнее, чем shortcut?

«Restart and Run All» — критично для воспроизводимости.