Все материалы
Продуктовая аналитикагайдстарт

Python для аналитика: рабочий стек из Jupyter, pandas и графиков

Какие инструменты нужны аналитику в Python: Jupyter, pandas, NumPy и matplotlib, как они связаны и с какого рабочего сценария начать.

КПКейсПрактика30 июля 2026 г.18 мин

Аналитику не нужен “весь Python”. Нужен небольшой, понятный рабочий стек, который помогает взять данные, проверить их, посчитать показатель и показать вывод. Начнём с связки Jupyter + pandas + NumPy + matplotlib и разберём, где она дополняет SQL и BI, а где только усложняет задачу.

Коротко

Jupyter — рабочая среда для экспериментов и объяснения расчёта. pandas — таблицы и операции над ними. NumPy — численные массивы и функции. matplotlib — базовые графики. Вместе они закрывают большую часть небольших и средних исследовательских задач аналитика.

  • Храни исходные данные отдельно от ноутбука и не меняй их на месте.
  • Один ноутбук должен отвечать на один вопрос или исследование.
  • Оставляй рядом с цифрой определение, фильтры и период расчёта.
  • SQL лучше использовать для тяжёлой выборки, Python — для исследования и повторяемого анализа.

Из чего состоит стек

Инструменты не конкурируют между собой. SQL достаёт и агрегирует данные ближе к хранилищу. Python помогает быстро проверить гипотезу, соединить небольшой набор файлов, построить нестандартный график или сохранить расчёт в понятном ноутбуке. BI нужен, когда результат должен регулярно смотреть широкий круг людей.

Роль каждого инструмента в работе аналитика
ИнструментЗа что отвечаетКогда открывать
Jupyterячейки кода, текст, таблицы и графики в одном документеисследование, разбор, обучение, прототип
pandasтабличные данные, фильтры, пропуски, группировки и соединенияCSV, выгрузка из SQL, подготовка отчёта
NumPyмассивы, численные операции и функциивекторные расчёты, симуляции, работа под капотом pandas
matplotlibконтролируемые графики и настройка осейпроверка тренда, распределения, сравнение сегментов
SQL / BIисточник данных и регулярная коммуникация результатабольшие таблицы, дашборды, мониторинг

Первый рабочий цикл

Новый ноутбук лучше начинать не с импорта десяти библиотек, а с заголовка, вопроса и условий. Затем загрузи минимальный срез, проверь форму и типы, сделай один расчёт и только после этого добавляй визуализацию. Такой порядок помогает не потеряться в графиках и случайных фильтрах.

pythonМинимальный ноутбук для проверки метрики
# Вопрос: как меняется средний заказ по каналам за июль?
import pandas as pd
import matplotlib.pyplot as plt

orders = pd.read_csv('data/orders.csv', parse_dates=['created_at'])
july = orders.loc[
    (orders['created_at'] >= '2026-07-01')
    & (orders['created_at'] < '2026-08-01')
    & (orders['status'] == 'paid')
].copy()

summary = july.groupby('channel', as_index=False).agg(
    orders=('order_id', 'nunique'),
    average_order=('revenue', 'mean'),
)
summary.plot.bar(x='channel', y='average_order', legend=False)
plt.show()

Ноутбук должен объяснять, а не только считать

Через месяц результатом будут пользоваться не только ты. Подпиши, откуда пришли данные, какая строка считается заказом, почему выбран период и что означает график. Текстовые Markdown-ячейки — часть аналитики, а не украшение. Если расчёт нельзя пересказать без запуска всех ячеек, он плохо подготовлен для передачи.

Python не отменяет определение метрики

Код может без ошибок посчитать среднее, DAU или retention. Но только аналитик задаёт знаменатель, временное окно, timezone и правило исключения тестовых пользователей.

  • В начале запиши вопрос и единицу анализа.
  • После загрузки покажи размер, период и пропуски.
  • Перед графиком выведи маленькую итоговую таблицу.
  • Не оставляй в финальном ноутбуке десятки случайных промежуточных экспериментов.
  • Сохрани версию исходного файла или ссылку на запрос, из которого он получен.

Когда открыть SQL, а когда Python

Если таблица содержит сотни миллионов событий, не скачивай её целиком в ноутбук. Сначала отфильтруй период и агрегируй данные в SQL, затем передай в pandas результат, который помещается в память и нужен для исследования. Для регулярного KPI лучше оставить расчёт в SQL/BI, а ноутбук использовать как место проверки и поиска причин.

Выбор инструмента по задаче
ЗадачаПервый инструментПочему
DAU за год по всем событиямSQLданные уже находятся в хранилище, важны фильтры и объём
Проверить выгрузку и пропускиpandasбыстрый интерактивный профиль файла
Регулярный KPI для командыBI + SQLобновление и единое определение
Сравнить несколько сценариев и построить нестандартный графикPythonудобно менять расчёт рядом с визуализацией

Настрой среду так, чтобы её можно было повторить

Рабочий стек начинается не с установки двадцати библиотек, а с понятной среды. Зафиксируй версию Python, зависимости и способ запуска ноутбука. Если сегодня pandas обновился автоматически, завтра изменится тип или предупреждение, а коллега не сможет повторить результат. Для маленького проекта достаточно requirements.txt, для более долгого — lock-файл и отдельное окружение.

Не смешивай системный Python, окружение проекта и ядро Jupyter. Проверь, что notebook действительно использует то окружение, где установлены pandas и NumPy. Сообщение «пакет установлен» ничего не доказывает, если kernel смотрит в другой интерпретатор.

В начале ноутбука выведи версии ключевых библиотек и путь к входным данным. Это выглядит скучно, но превращает случайный запуск в документированный эксперимент. При расследовании расхождения такие две строки часто экономят больше времени, чем повторное чтение всего кода.

pythonПроверить окружение и вход
import sys
import pandas as pd
import numpy as np
from pathlib import Path

print('python:', sys.version)
print('pandas:', pd.__version__)
print('numpy:', np.__version__)
print('cwd:', Path.cwd())

Структура проекта важнее количества библиотек

Для учебного анализа достаточно папок data, notebooks, src и output. Сырые файлы не редактируются, notebook отвечает за исследование и объяснение, а повторяемые функции живут в src. Такой порядок не требует сложной архитектуры, но не даёт смешать загрузку, очистку и презентацию в одной ячейке.

Имена файлов должны говорить о слое и периоде: raw/orders_2026_08.csv, clean/orders.parquet, output/channel_report.csv. Не называй результат final_final_2.csv. Если файл создаётся кодом, путь к нему должен быть параметром или константой, а не ручным переключателем в середине ноутбука.

Добавь README с одним рабочим сценарием: как создать окружение, где лежит файл, какой командой запустить notebook и какие контрольные числа ожидать. Документация не обязана быть длинной. Её задача — убрать догадки при первом запуске другим человеком.

Минимальная структура аналитического проекта
ПапкаНазначение
data/rawисходные выгрузки без ручной правки
data/cleanтипизированные и проверенные слои
notebooksисследование, графики и объяснение
srcпереиспользуемые функции и проверки
outputсобранные таблицы и изображения

Отладка начинается с маленького среза

Когда расчёт падает на большом файле, сначала воспроизведи проблему на небольшом срезе. Сохрани строки вокруг неверного значения, а не весь источник. Маленькая фикстура быстрее читается, легче прикладывается к issue и помогает написать regression-тест после исправления.

Разделяй техническую и методологическую ошибку. KeyError означает, что код не нашёл колонку. Успешный расчёт с неправильным знаменателем — уже методологическая ошибка, и её не поймает Python. Поэтому в каждом рабочем ноутбуке должны быть и проверки схемы, и sanity-check на смысловые значения.

График используй как диагностический инструмент, а не только как финальную иллюстрацию. Линия по дням помогает увидеть пропущенный период, bars по каналам — unknown, а таблица квантилей — неожиданный хвост. Визуализация в отладке часто быстрее, чем просмотр сотен строк.

Сначала уменьши проблему

Небольшой воспроизводимый пример помогает и тебе, и коллеге, который будет разбирать ошибку. Он превращает «у меня странная цифра» в конкретное правило и вход.

Первый проект аналитика: от вопроса до memo

Для практики возьми вопрос «почему изменилась выручка по каналам». Получи ограниченный период через SQL или CSV, проверь схему в pandas, собери revenue, orders и buyers по каналу, затем разбей общий результат на новые и вернувшиеся аккаунты. Один вопрос даст достаточно материала для фильтра, groupby, merge, графика и проверки.

В финальном memo не перечисляй функции pandas. Напиши, какой сегмент изменился, насколько велика база, что ты проверил и какое действие предлагаешь. Код нужен, чтобы сделать вывод воспроизводимым, а не чтобы заменить вывод списком методов.

После первого проекта добавь тест на контрольный DataFrame и ссылку на соседнюю SQL-статью. Так рабочий стек становится траекторией: Python помогает исследовать, SQL — считать ближе к источнику, а визуализация — объяснять решение команде.

  • Зафиксировать версии и окружение.
  • Разделить raw, clean, notebook и output.
  • Получить маленький воспроизводимый срез.
  • Добавить проверки схемы и смысла результата.
  • Закончить memo с действием, а не перечнем методов.
Продолжить чтение
Вся библиотека