Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в 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).
Частые грабли и как их избежать
- Всё в одном ноутбуке. Из-за своей лени (чтоб не пересохранять выборки, не прыгать из файла в файл и т.д.), бывало я смешивал EDA, ETL и ML в одном файле ~ 500 ячеек, и в итоге терялся. Теперь держу всё по полочкам.
- Не сохранил выводы. Построил графики, а через неделю забыл, что они значат. Пиши заметки в комментариях или Markdown!
- Запуск всех ячеек. Нажал "Run All" на большом датасете — жди час. Проверяй код по ячейкам.
- Забыл зависимости. Если шаришь ноутбук, добавь ячейку с !pip install pandas seaborn и всё что нужно, чтобы коллеги не ругались на тебя🙃.
Итоги
Jupyter Notebook — это мой верный напарник в аналитике. Он помогает держать код, графики и мысли в одном месте, прототипировать ETL и строить отчёты без боли. Мне нравится и это действительно удобно использовать Markdown, горячие клавиши и расширения — это здорово влияет на продуктивность. Мои первые ноутбуки были хаосом, но со временем накапливаются шаблоны и ошибки уходят на нет.
Я не претендую на истину в последней инстанции, просто рассказываю, как иду по пути аналитика. Спасибо, что дочитали! 😎 Подписывайтесь 👇👇👇, лайкайте 👍🏽👍🏽, пишите в комментах пожелания, вопросы, замечания. Буду рад любой активности. Впереди разборы инструментов, навыков и IT-фишек!