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» — критично для воспроизводимости.