Метрика повторных покупок по когортам показывает долю клиентов, совершивших вторую покупку после определенного периода с момента их первого заказа. Она позволяет оценить реальную лояльность и качество продукта без влияния новых притоков аудитории.

Понимание метрики: что такое повторные покупки по когортам и зачем она нужна

Когорта — это группа клиентов, объединённая общим признаком, чаще всего датой первой покупки. Повторная покупка внутри когорты фиксируется через определённый интервал времени (например, 7 или 30 дней).

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

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

Сбор данных: подготовка таблиц транзакций и сегментации клиентов

Для расчёта требуется таблица транзакций с полями: id_клиента, дата_покупки, сумма_заказа, статус_транзакции. Также нужна таблица уникальных клиентов с датой первой покупки.

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

Сегментация клиентов по когортам происходит автоматически: для каждого клиента берётся минимальная дата покупки в истории и формируется когорта на основе этой даты.

Определение когорт: логика формирования групп по дате первой покупки

Когорты формируются по уникальным значениям даты первой покупки. Если клиент совершил первую покупку 1 января, он попадает в когорту '2024-01-01'.

Если дата первой покупки не фиксирована, а используется период (например, неделя), то когорта определяется как диапазон дат. Для точности лучше использовать конкретную дату.

Пример: клиент А купил товар 5 января, клиент Б — 7 января. Если когорты формируются по дням, они будут в разных группах. Если по неделям — оба попадут в одну когорту 'неделя с 1 по 7 января'.

Расчёт метрик удержания: формулы для доли повторных покупок внутри когорты

Основная формула: доля повторных покупок = (количество клиентов из когорты, совершивших вторую покупку в интервале) / (общее количество клиентов в когортe).

Интервал времени может быть фиксированным (например, 30 дней после первой покупки) или динамическим (через N периодов: 1 день, 7 дней, 30 дней).

Пример расчёта: в когорту '2024-01-01' попало 100 клиентов. Через 30 дней из них 25 совершили вторую покупку. Метрика удержания за 30 дней = 25/100 = 25%.

Визуализация результатов: построение матрицы когорт (cohort retention chart)

Матрица когорт строится в виде таблицы, где по горизонтали — когорты (даты первой покупки), а по вертикали — интервалы времени после первой покупки.

Каждая ячейка содержит процент клиентов из соответствующей когорты, совершивших покупку через указанный интервал.

Визуализация помогает увидеть паттерны: например, если все когорты показывают резкое падение удержания на 30-й день, это сигнал к анализу причин (например, истечение промоакции).

Инструменты для построения: Excel, Google Sheets, Python (библиотека matplotlib), BI-системы (Tableau, Power BI).

Анализ динамики: выявление трендов и аномалий в поведении клиентов

Тренды определяются сравнением метрик разных когорт. Если когорты 2024-Q2 показывают более высокий удержания, чем Q1, значит, продукт или маркетинг улучшились.

Аномалии — это резкие отклонения от ожидаемого поведения. Например, если когорта с низкой конверсией показывает неожиданно высокий удержания, возможно, в ней были привлечены клиенты через дорогую рекламу с высокой мотивацией.

Для анализа динамики рекомендуется строить графики изменения метрики по времени и сравнивать их с внешними факторами (сезонность, конкуренты, изменения в продукте).

Ошибки при расчёте: типичные искажения данных и способы их устранения

Ошибка 1: игнорирование возвратов. Если клиент купил товар, а через неделю вернул его, это не должно считаться повторной покупкой. Решение: фильтровать транзакции по статусу 'завершена' или учитывать возвраты как отрицательную сумму.

Ошибка 2: неправильное определение даты первой покупки. Если в истории клиента есть тестовые заказы, они могут исказить дату когорты. Решение: очищать данные от тестовых записей перед формированием когорт.

Ошибка 3: смешение новых и старых клиентов. При расчёте метрики важно учитывать только тех, кто совершил первую покупку в рамках конкретной когорты, а не всех активных клиентов.

Применение результатов: как использовать метрику для улучшения бизнес-процессов

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

Результаты анализа используются для корректировки стратегии: например, если удержание падает на 30-й день, можно запустить программу лояльности или напоминание о продукте.

Также метрика помогает выявить проблемные продукты или услуги. Если клиенты, купившие определённый товар, реже возвращаются, значит, нужно пересмотреть его качество или условия продажи.

Вопросы и ответы

Как часто нужно обновлять когорты?

Когорты формируются по каждой новой дате первой покупки. Обновление данных должно происходить регулярно (ежедневно или еженедельно), чтобы метрика отражала актуальную ситуацию.

Можно ли использовать метрику для оценки эффективности рекламы?

Да, если привязать когорты к источникам привлечения. Сравнение удержания клиентов из разных рекламных каналов покажет, какие кампании дают более лояльную аудиторию.

# Пример расчёта метрики удержания по когортам import pandas as pd def calculate_cohort_retention(transactions): # Группировка по дате первой покупки first_purchase = transactions.groupby('client_id')['purchase_date'].min() cohorts = first_purchase.to_dict() # Формирование когорт cohort_dates = sorted(cohorts.values()) # Расчёт удержания через 30 дней retention_30d = {} for cohort_date in cohort_dates: clients_in_cohort = transactions[transactions['purchase_date'] == cohort_date]['client_id'].tolist() repeat_buyers = transactions[(transactions['client_id'].isin(clients_in_cohort)) & (transactions['purchase_date'] > cohort_date + pd.Timedelta(days=30))]['client_id'].unique() retention_30d[cohort_date] = len(repeat_buyers) / len(clients_in_cohort) return retention_30d