Эта статья — хаб серии про пет-проекты. В серии четыре пошаговые инструкции: A/B-тест с нуля, когортный анализ и retention, дашборд продаж в DataLens и воронка продукта. Здесь — всё, что нужно решить до кода: зачем вообще проект, откуда брать данные и как упаковать результат так, чтобы он сработал на собеседовании.
Почему пет-проект убеждает сильнее пересказа опыта
Посмотрите на найм глазами компании. У неё есть конкретные задачи: посчитать, сработал ли запуск, понять, почему уходят клиенты, собрать витрину, по которой руководитель примет решение. Из сотен откликов она выберет того, кто уже делал похожую работу. Резюме без проектов отвечает на вопрос «где вы были», проект отвечает на вопрос «что вы умеете» — и второй вопрос для нанимающего важнее.
Стандартный совет новичку — «красиво опишите опыт официанта или оператора кол-центра, добавьте софт-скиллы». Этот совет не работает: организованный корпоратив ничего не говорит о том, посчитаете ли вы A/B-тест и отличите ли значимость от случайности. Доказательство квалификации — две-три доведённые до конца работы, по которым видно: человек берёт данные, задаёт вопрос и доходит до вывода.
У пет-проекта есть и второе преимущество, о котором реже говорят: он даёт материал для разговора. Интервьюер, у которого перед глазами ваш репозиторий, задаёт вопросы по нему — «почему выбрали этот метод», «что бы сломалось, если бы данные были другими». Это разговор на вашей территории: вы знаете каждое решение в проекте, потому что сами его принимали. Кандидат без проектов отвечает на абстрактные вопросы из общего списка — территория интервьюера, где преимущество не у вас.
И третье: проект проверяем. «Работала с большими данными» из резюме проверить нельзя, ссылку на GitHub с воспроизводимым анализом — можно за пять минут. Проверяемые утверждения вызывают больше доверия, и это распространяется на всё резюме целиком.
Шесть правил рабочего проекта
Правила, без которых проект ляжет мёртвым грузом в репозиторий. Все шесть выведены из одного принципа: проект должен имитировать реальную задачу аналитика, а не учебное упражнение.
- Берите близкие вам данные. Свои финансы, расходы на доставку, статистика любимого сериала, вакансии в вашем городе. На интересных данных вы доведёте работу до конца, на чужих — бросите на середине. Доля брошенных пет-проектов велика ровно потому, что люди начинают с «престижного» датасета, а не с любопытного.
- Поставьте цель и вопрос до кода. Не «поиграю с табличкой», а «какие факторы сильнее влияют на рейтинг сериала» или «выросли ли мои траты на доставку за год». Вопрос задаёт вектор всей работе и отличает анализ от набора графиков.
- Проверьте качество данных. Пропуски, дубли, выбросы, типы колонок. Без чистки любые выводы будут неверными — и это первое, что спросят на собеседовании про любой ваш проект.
- Доведите до вывода и картинки. Сырой ноутбук с десятком графиков не считается результатом. Нужен короткий вывод словами («новая кнопка повышает конверсию на 1,9 п.п., эффект значим») и одна наглядная визуализация, которая этот вывод показывает.
- Выложите на люди. GitHub с понятным README плюс дашборд по ссылке. Пока проект живёт только на вашем ноутбуке, для рынка его не существует.
- Один доделанный важнее пяти начатых. Два-три завершённых проекта закрывают вопрос «нет опыта». Десяток заброшенных на середине не закрывает ничего — наоборот, репозиторий из недоделок работает против вас.
Где брать данные: 10 источников
Все источники ниже бесплатны и не требуют доступов — скачали, открыли, задали вопрос. Различаются они тем, чему учат и какие грабли прячут.
| Источник | Что это | Плюсы | Минусы |
|---|---|---|---|
| Kaggle Datasets | Крупнейшая библиотека датасетов с описаниями и чужими ноутбуками | Старт по умолчанию: любая тема, готовые CSV, можно подсмотреть идеи в чужих работах | Данные часто уже вычищены — навык чистки не тренируется; популярные датасеты «затёрты», проект по Titanic не выделит вас никак |
| Superstore (Tableau Public Sample) | Учебный датасет продаж, на котором учится полмира | Классика для первого дашборда: рядом сотни готовых разборов, есть с чем сверяться | Та же затёртость — датасет узнают с первого взгляда; лучше брать структуру, а данные генерировать свои |
| hh.ru API | Живые вакансии и зарплаты, выгружаются программно | Отличный первый Python-проект с реальной пользой: что за навыки и деньги в аналитике прямо сейчас; тренирует работу с API и JSON | Зарплата указана не во всех вакансиях — придётся честно работать с пропусками; лимиты запросов |
| World Bank Open Data | Демография и экономика стран за десятки лет | Красивые временные ряды, сравнение стран, аккуратные данные | Макроэкономика далека от продуктовой аналитики — для собеса в IT-компанию тема будет выглядеть отвлечённой |
| data.gov | Портал открытых данных США: транспорт, здоровье, экология | Огромный выбор, реальные «грязные» данные государственного масштаба | Английская предметная область, которую придётся изучать; качество наборов сильно гуляет |
| Открытые данные России (data.gov.ru, mos.ru, Росстат) | Госстатистика и городские наборы | Родная предметная область; грязные форматы — честная тренировка чистки и парсинга XLSX | Именно грязные: кривые кодировки, объединённые ячейки, смена методик между годами. Берите вторым проектом, не первым |
| UCI Machine Learning Repository | Академический архив датасетов | Проверенные наборы с описанием каждой колонки, много классики | Датасеты маленькие и старые; уклон в ML-задачи, а не в продуктовую аналитику |
| Open-Meteo и другие погодные API | Исторические и текущие данные о погоде без регистрации | Бесплатный API без ключа — самый низкий порог входа в работу с API; хорошо скрещивается с другими данными («зависят ли заказы от дождя») | Сама по себе погода — не бизнес-задача; работает как дополнение к другому датасету |
| VK API и другие API соцсетей | Посты, комментарии, статистика сообществ | Живые данные, тренирует API, пагинацию и текстовую предобработку | Ограничения приватности и лимиты; правила доступа периодически меняются — проект может «протухнуть» |
| Синтетические данные с фиксированным seed | Данные генерируете сами кодом, np.random.seed(N) делает прогон воспроизводимым |
Полный контроль: закладываете эффект и проверяете, найдёт ли его анализ; никаких лицензий; любой запустит скрипт и получит те же числа | Нужно уметь заложить реалистичную механику (сезонность, затухание, разброс); на собеседовании честно говорите, что данные синтетические |
Практическое замечание к последней строке: все четыре проекта серии построены на синтетике с seed, и это осознанный выбор. Генерация данных — отдельный полезный навык (чтобы заложить в когорты экспоненциальное затухание, нужно понимать, как ведёт себя retention), а воспроизводимость превращает проект в проверяемое утверждение: интервьюер может запустить скрипт и увидеть ровно ваши цифры.
Ещё один способ пополнить запас: хакатоны. Компании выкладывают туда наборы, близкие к боевым, — участвуйте и сохраняйте данные, это задел для будущих проектов.
Четыре проекта серии
Каждый проект закрывает один из главных навыков, которые проверяют на собеседовании аналитика. Все четыре: воспроизводимая генерация данных, анализ на pandas, графики, текстовый отчёт с цифрами. Код серии лежит в одном репозитории: github.com/akaty01032003-crypto/analytics-petprojects.
1. A/B-тест: новая кнопка повышает конверсию?
60 000 пользователей, две группы, в группу B заложен реальный эффект. Статистика написана руками, без scipy: z-тест двух пропорций, проверка Sample Ratio Mismatch, хи-квадрат для сверки, 95%-й доверительный интервал. Результат прогона: конверсия A 9,39% против B 11,27%, аплифт +1,88 п.п., p-value порядка 3,8e-14, ДИ [+1,39; +2,37] целиком в плюсе. Проект отвечает на любимый вопрос интервьюеров «как поймёте, что эффект настоящий, а не шум». Стек: Python, pandas, numpy, matplotlib. 2–3 часа.
Инструкция: A/B-тест с нуля — синтетика, SRM, z-тест, доверительный интервал.
2. Когортный анализ: как удерживаются клиенты
8 000 клиентов, 20 680 заказов, 12 месячных когорт. Строится retention-матрица и heatmap: к первому месяцу доживает 34,8% когорты, к третьему 20,4%, к шестому 9,0% — при этом 72,3% клиентов делают хотя бы один повтор. Проект показывает понимание продуктовых метрик, которое на собеседовании ценят дороже красивого кода. Стек: pandas, numpy, matplotlib. 2–3 часа.
Инструкция: когортный анализ и retention.
3. Дашборд продаж в Yandex DataLens
10 000 заказов за два года в духе Superstore. Python чистит данные и считает агрегаты, DataLens превращает их в интерактивный дашборд по публичной ссылке. Результат: выручка 10,92 млн при марже 9,5%; Technology зарабатывает при марже 14,3%, Furniture даёт большой оборот при марже 3,5% и съедает прибыль. Единственный проект серии с BI-инструментом — и единственный, который можно открыть по ссылке прямо на собеседовании. Стек: Python + Yandex DataLens. 3–4 часа.
Инструкция: дашборд продаж в Yandex DataLens.
4. Воронка продукта: где отваливаются пользователи
15 000 пользователей, события visit → signup → activate → purchase, разрез по каналам привлечения. Сквозная конверсия 6,25%; самый дырявый переход — активация → покупка, где отваливается 70,5%; referral конвертит в 11,57% против 3,81% у платной рекламы. Проект тренирует главное умение продуктового аналитика — разводить абсолютную и пошаговую потерю и делать выводы по каналам. Стек: pandas, numpy, matplotlib. 2–3 часа.
Инструкция: воронка продукта.
Одна оговорка про весь репозиторий. Скачать чужой код и выдать за свой — худшее, что можно сделать: на собеседовании это вскрывается за два уточняющих вопроса. Берите проекты как ориентир и проходите каждый шаг руками — инструкции выше написаны именно для этого.
В каком порядке собирать
Если цель — позиция продуктового аналитика, рабочий порядок: воронка → когорты → A/B-тест → дашборд. Первые два дают язык продуктовых метрик, на котором идёт половина собеседования; A/B-тест добавляет статистику; дашборд — витрину, которую можно показать по ссылке. Если цель — BI-аналитик, начинайте с дашборда и добавьте воронку: связка «SQL-логика + витрина» покрывает основные вопросы этого профиля.
Ограничение по времени тоже стоит учитывать: каждый проект занимает 2–4 часа чистой работы, но с упаковкой (README, репетиция рассказа) реалистичнее закладывать день на проект. Четыре проекта — это две пары выходных, а не месяц: серия специально собрана компактной, чтобы её реально было довести до конца.
И не обязательно собирать все четыре подряд. Два доведённых до конца проекта с внятными README уже меняют разговор на собеседовании; остальные добавляются по мере подготовки к конкретным вакансиям — под требования из описания.
Как упаковать проект
Сделать — половина дела. Вторая половина — упаковка, из-за которой проект либо заметят, либо нет.
README с вопросом и ответом сверху. Рекрутёр читает три строки, а не код. В первых трёх строках README должно быть: какой вопрос вы задали данным и что выяснили. Структура README каждого проекта серии: бизнес-вопрос → данные → как воспроизвести → шаги → выводы с цифрами. Скопируйте эту структуру — она проверена.
Воспроизводимость. Инструкция запуска в две команды (python3 gen_data.py, python3 analysis.py), зафиксированные зависимости, детерминированный результат. Проект, который нельзя запустить, — это скриншоты, а не проект.
Дашборд или график по ссылке. Опубликованный дашборд в DataLens или Tableau Public открывается одним кликом прямо на собеседовании. Ссылка в README и в резюме.
Рассказ историей. На собеседовании проект рассказывают по схеме «думала так → увидела вот это → поэтому вывод такой». Связный рассказ о ходе мысли ценнее перечисления технологий: интервьюер оценивает мышление, а стек он видит в резюме. Отрепетируйте рассказ на 90 секунд по каждому проекту — в каждой инструкции серии есть готовая заготовка и типичные вопросы интервьюера с ответами.
Присваивайте результат. «Я построила», «я выяснила» — без «ну это я просто училась». Вы сделали работу аналитика; то, что она не оплачивалась, не делает её менее настоящей.
Типичные ошибки
- Проект без вопроса. «Исследовала датасет» — не результат. Если из README нельзя понять, на какой вопрос отвечает работа, интервьюер закроет вкладку.
- Затёртый датасет без своего угла. Titanic, Iris и стандартный Superstore-разбор видели все. Либо свежие данные, либо свой вопрос к классике.
- Ноутбук на 200 ячеек вместо результата. Черновик исследования — нормальный этап, но выкладывать нужно причёсанную версию: код по шагам, вывод в конце, график с подписями осей.
- Выводы без цифр. «Retention падает» — наблюдение. «К первому месяцу теряем 65% когорты, значит бороться нужно за второй заказ» — вывод аналитика.
- Стек ради стека. Spark для таблицы на 10 000 строк вызывает вопрос «зачем», а не уважение. Инструмент подбирается под задачу — это тоже проверяемый навык.
- Молчаливый обрыв. Проект «почти готов» месяцами. Зафиксируйте минимальный законченный объём (вопрос → анализ → вывод → README) и доведите до него; улучшать можно потом.
Источники
- Ron Kohavi, Diane Tang, Ya Xu. Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing. Cambridge University Press, 2020.
- Alistair Croll, Benjamin Yoskovitz. Lean Analytics: Use Data to Build a Better Startup Faster. O'Reilly, 2013.
- Документация pandas — https://pandas.pydata.org/docs/
- Документация matplotlib — https://matplotlib.org/stable/
- Документация Yandex DataLens — https://yandex.cloud/ru/docs/datalens/
- Kaggle Datasets — https://www.kaggle.com/datasets
- World Bank Open Data — https://data.worldbank.org
- UCI Machine Learning Repository — https://archive.ics.uci.edu
- Open-Meteo — https://open-meteo.com
- Документация API hh.ru
Пет-проект закрывает вопрос «покажите, что вы умеете». Вторую часть собеседования — задачи по SQL, статистике, A/B и продуктовым кейсам — закрывает практика: в каталоге задач собраны реальные вопросы с собеседований аналитиков с разборами, часть открыта бесплатно.