Условие
Рассчитайте прирост средней конверсии на 1 магазин в Санкт-Петербурге из «входящих» в «покупатели». В анализе должны участвовать только сопоставимые магазины (LFL) — те, что работали в обоих периодах.
Период 1 vs Период 2.
Решение
Подход
- Конверсия магазина =
Покупатели / Входящие. - LFL: фильтр магазинов, у которых в обоих периодах
Входящие > 0(либо просто есть данные). - Отдельно по СПб (
Город='Санкт-Петербург'). - Прирост =
avg_conv_2 − avg_conv_1(илиavg_conv_2 / avg_conv_1 − 1в %).
Реализация
import pandas as pd
df = pd.read_excel('585.xlsx', sheet_name='Задание1')
df = df[df.Город == 'Санкт-Петербург'].copy()
# Конверсия по магазину × период
df['conv'] = df['Покупатели,чел.'] / df['Входящие,чел']
df = df.replace([float('inf'), -float('inf')], pd.NA).dropna(subset=['conv'])
# LFL: магазины, присутствующие в обоих периодах
lfl_shops = df.groupby('Кодмагазина').Период.nunique()
lfl_shops = lfl_shops[lfl_shops == 2].index
lfl = df[df.Кодмагазина.isin(lfl_shops)]
# Средняя конверсия по периодам
avg = lfl.groupby('Период').conv.mean()
print(avg)
print(f"Прирост (абс., п.п.): {(avg.loc[2] - avg.loc[1]) * 100:.2f}")
print(f"Прирост (отн., %): {(avg.loc[2] / avg.loc[1] - 1) * 100:.2f}")Excel-формула
- Доп. колонка
Конверсия = Покупатели / Входящие. - Сводная по магазину × период.
- Помечаем LFL: магазины, где в обоих периодах есть значения (
COUNTA = 2). - На отдельной строке —
AVERAGEIFS(Конверсия, Период, X, LFL_flag, "Y", Город, "Санкт-Петербург").
Подводные камни
- Деление на ноль: если
Входящие = 0(магазин закрыт), конверсия = ∞ или ошибка. Фильтровать. - LFL ≠ «все», нельзя считать общий avg по всем строкам (будет учитываться открывшийся магазин с малым числом дней).
- Средняя конверсия по магазинам ≠ конверсия суммы.
AVG(Покуп/Вход) ≠ SUM(Покуп)/SUM(Вход). Уточнить, какая нужна заказчику. - Один и тот же магазин может появляться в нескольких строках одного периода — сначала агрегировать до уровня магазина.
- Если данные содержат запятые в числах (
'3,560'строкой) —to_numericсreplace(',','.').
Эталонный ответ
Фильтр СПб → конверсия по магазину → LFL = магазины в обоих периодах → среднее по магазинам в каждом периоде → прирост 2-го периода относительно 1-го.