Найти в Дзене

Как Jupyter Notebook спасает мою аналитику: лайфхаки и опыт

Оглавление

Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!

Jupyter Notebook — это как швейцарский нож для аналитика данных: и код напишешь, и графики построишь, и заметки оставишь, и всё это в одном месте. Расскажу, как Jupyter Notebook стал моим лучшим другом в работе, как я его использую и какие лайфхаки помогают экономить время и нервы.

Картинка сгенерирована в Шедевруме
Картинка сгенерирована в Шедевруме

Предисловие: как я открыл Jupyter

Во время прохождения курса по машинному обучению, нам задавали задачи на Google Colabs, ещё тогда впервые познал удобство и простоту так называемых ноутбуков. Впоследствии на первой работе я продолжил работу в колабах, приноровился сделал всякие шаблоны по быстрому анализу, по задачам регрессии и классификации - так, чтобы просто загрузить датафрейм и быстро сделать что требуется.

Уже когда я перешел на новую работу в банк, аналитиком данных, мне в наследство досталось множество файлов Jupyter Notebook (формат совпадает с Google Colabs, но в банке у меня не было доступа к интернету и сторонним сервисам, был только установленный Jupyter Notebook в купе с остальными инструментами разработки, которые идут с Anaconda).

Далее я уже полностью перешел на Jupyter Notebook не только на работе, но и на домашнем пк. С тех пор все мои EDA, ETL, дашборды и даже отчёты начинаются в Jupyter. Это не просто инструмент, а целая экосистема для аналитики, где я чувствую себя как дома.

Говоря о Jupyter Notebook я имею ввиду не только Jupyter Notebook, но и Jupyter Lab, я одинаково пользуюсь и тем и другим, просто для быстрых разовых задач использую первое, в иных случаях второе.

Зачем мне Jupyter Notebook?

Jupyter — это интерактивная среда, где ты пишешь код (я пишу в Python), видишь результат сразу и можешь добавлять текст, графики, таблицы. Почему он так важен для меня:

  • Всё в одном месте. Код, визуализации, комментарии — не надо прыгать между файлами.
  • Интерактивность. Запустил ячейку — сразу вижу, что получилось. Ошибся? Поправил и перезапустил.
  • Шаринг. Мой ноутбук — это готовый отчёт: показал тимлиду или заказчику, и все довольны.
  • Гибкость. Хочу — пишу SQL, хочу — строю дашборд в Plotly, хочу — парсю данные (могу сохранить в .py и продолжить работу в Pycharm например).

Как я использую Jupyter в работе

Моя работа — это аналитика данных, ETL-процессы и немного ML. Вот как Jupyter помогает в каждом случае:

1. Разведочный анализ данных (EDA)

Когда мне прилетают данные, я формирую новый датасет, я открываю Jupyter и начинаю копаться. Пример:

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

# Загружаю данные
df = pd.read_csv('sales.csv')

# Быстрый взгляд
print(df.head())
print(df.describe())
print(df.info())


# Гистограмма цен
sns.histplot(df['price'], bins=30)
plt.title('Распределение цен')
plt.show()

Почему удобно: Я пишу код по ячейкам, сразу вижу графики, добавляю комментарии в Markdown (например, "20% пропусков в category, проверить"). Если что-то ломается, правлю одну ячейку, а не весь скрипт.

2. Прототипирование ETL

Перед тем как писать DAGи для Airflow, я тестирую ETL в Jupyter. Например, выгружаю данные из базы, чищу и пушу в DWH.

import psycopg2
import pandas as pd

# Выгружаю из PostgreSQL
conn = psycopg2.connect(dbname='storage_db', user='oktober13', password='********', host='**********')
query = "SELECT * FROM orders WHERE date > '2025-01-01'"
df = pd.read_sql(query, conn)
conn.close()

# Чищу данные, например убираю пустые строки по полю price
df = df.dropna(subset=['price'])

# Сохраняю в CSV для теста
df.to_csv('cleaned_orders.csv', index=False)

Почему удобно: Могу проверить каждый шаг (выгрузка, очистка, трансформация) отдельно. Если всё ок, копирую код в Airflow.

3. Визуализации и отчёты

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

import plotly.express as px

# График продаж по месяцам
df['date'] = pd.to_datetime(df['date'])
fig = px.line(df.groupby(df['date'].dt.to_period('M'))['revenue'].sum().reset_index(),
x='date', y='revenue', title='Продажи по месяцам')
fig.show()

Почему удобно: Plotly в Jupyter даёт интерактивные графики, которые можно сразу показать коллегам. Плюс, я добавляю пояснения в Markdown, и это уже почти готовый отчёт (главное договориться заранее в каком виде предоставляешь отчет, когда я только пришел на эту позицию, было принято кидаться презентациями в Power Point, со временем получилось договориться и на другие быстрые отчеты типа файлов Jupyter).

Лайфхаки для работы в Jupyter

За пару лет я набрал кучу фишек, которые делают работу в Jupyter проще и быстрее. Вот мои любимые:

1. Это спасает, когда возвращаешься к ноутбуку через месяц. Markdown для документации.
Пиши комментарии в ячейках Markdown: что делает код, какие выводы. Пример:

## Анализ пропусков (два знака # означает второй заголовок, один знак # означает первый заголовок и т.д.)
Пропуски в `price` составляют 5%. Заполню медианой.

2. %%time помогает понять, где код тормозит. Магические команды.
Jupyter поддерживает "магию" для упрощения жизни.

Например:

%matplotlib inline # Графики отображаются сразу
%%time # Засекает время выполнения ячейки

3. Расширения Jupyter.
Установи jupyter_contrib_nbextensions (через pip) и включи расширения: Table of Contents — оглавление для ноутбука.
ExecuteTime — показывает, сколько времени выполнялась ячейка.
Spellchecker — проверяет орфографию в Markdown.
Это как турбонаддув для Jupyter.

4. Сохраняй промежуточные данные.
Если датасет большой, сохраняй результаты в CSV или pickle, чтобы не перезапускать весь код.

df.to_pickle('cleaned_data.pkl')
df = pd.read_pickle('cleaned_data.pkl')

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

Ctrl+Enter — запустить ячейку.
Shift+Enter — запустить и перейти к следующей.
A — добавить ячейку выше.
B — ниже (в командном режиме).
M — переключить ячейку в Markdown.
Это экономит кучу времени.

6. Автоматизация отчётов.
Используй papermill для запуска ноутбуков с параметрами. Например, генерировать отчёт для разных регионов:

papermill report.ipynb output.ipynb -p region "Moscow"

Простыми словами - papermill позволяет запускать один и тот же ноутбук с разными параметрами, которые ты заранее можешь определить (в сети много информации и обучалок по этой штуке, достаточно удобно если есть соответствующие задачи с повторами и заменой параметров).

7. Не перегружай ноутбук.
Если код становится огромным, разбей на несколько ноутбуков: один для EDA, другой для ETL. Иначе Jupyter начнёт лагать, кстати отслеживать переменные удобно в Jupyter Lab
(я использую расширение Variable Inspector).

Частые грабли и как их избежать

  1. Всё в одном ноутбуке. Из-за своей лени (чтоб не пересохранять выборки, не прыгать из файла в файл и т.д.), бывало я смешивал EDA, ETL и ML в одном файле ~ 500 ячеек, и в итоге терялся. Теперь держу всё по полочкам.
  2. Не сохранил выводы. Построил графики, а через неделю забыл, что они значат. Пиши заметки в комментариях или Markdown!
  3. Запуск всех ячеек. Нажал "Run All" на большом датасете — жди час. Проверяй код по ячейкам.
  4. Забыл зависимости. Если шаришь ноутбук, добавь ячейку с !pip install pandas seaborn и всё что нужно, чтобы коллеги не ругались на тебя🙃.

Итоги

Jupyter Notebook — это мой верный напарник в аналитике. Он помогает держать код, графики и мысли в одном месте, прототипировать ETL и строить отчёты без боли. Мне нравится и это действительно удобно использовать Markdown, горячие клавиши и расширения — это здорово влияет на продуктивность. Мои первые ноутбуки были хаосом, но со временем накапливаются шаблоны и ошибки уходят на нет.

Я не претендую на истину в последней инстанции, просто рассказываю, как иду по пути аналитика. Спасибо, что дочитали! 😎 Подписывайтесь 👇👇👇, лайкайте 👍🏽👍🏽, пишите в комментах пожелания, вопросы, замечания. Буду рад любой активности. Впереди разборы инструментов, навыков и IT-фишек!