13 KiB
13 KiB
План полноценного преданализа датасета «Коммуникации в Городе»
Основано на описании датасета: есть ежедневные коммуникации с клиентами в экосистеме «Город Т-Банка», активные/пассивные каналы, показы/клики и заказы по категориям (ent, super, transport, shopping, hotel, avia), а также демография и устройство.
Обозначения:
*_imp_*— показы (impressions) активных/пассивных каналов по категориям (ent,super,transport,shopping,hotel,avia).*_click_*— клики/касания по тем же категориям.orders_amt_*— число заказов по категориям.gender_cd,age,device_platform_cd— демография и устройство.
0. Технический скелет проекта
Файлы/ноутбуки:
01_load_and_clean.ipynb— загрузка, чистка, базовые описания.02_univariate_bivariate.ipynb— распределения и связи признаков.03_time_and_lags.ipynb— время, лаги, сезонность.04_clients_segmentation.ipynb— агрегаты по клиенту, сегменты.05_exploratory_models.ipynb— простые модели как часть EDA.eda_report.md/eda_report.ipynb— итоговый отчёт.
1. Загрузка и структура данных
Таблицы/выводы
df.info()— список столбцов, типы, количество ненулевых.df.head(5)— первые строки для визуальной проверки.- Размерность:
n_rows,n_colsn_unique_clients = df['id'].nunique()- диапазон дат:
min(business_dt),max(business_dt)
- Проверка ключа:
- таблица:
df.groupby(['id', 'business_dt']).size().value_counts().head()
(показывает, есть ли дубликаты по ключу)
- таблица:
- Среднее число дней на клиента:
df.groupby('id').size().describe()
Графики
- Количество записей по датам:
bar/line: X =business_dt, Y =count(*)- цель: увидеть провалы/пики выгрузки
2. Качество данных и аномалии
Таблицы/метрики
- Пропуски:
- таблица: колонка → количество пропусков → доля пропусков
- Базовый
describeпо числовым:df[num_cols].describe().T
- Доля нулей:
- таблица: колонка → доля нулей → min/max → 95-й, 99-й перцентили
- Логические проверки:
- все
*_imp_*,*_click_*,orders_amt_*должны быть>= 0 - поиск отрицательных/странных значений
- все
- Возраст:
- мин/макс, перцентили (1-й, 99-й), доля мусора (например,
<14или>100)
- мин/макс, перцентили (1-й, 99-й), доля мусора (например,
- Категориальные:
- уникальные значения
gender_cd,device_platform_cd - приведение к единому формату (trim, upper,
unknown)
- уникальные значения
Графики
- Boxplot возраста:
- Y =
age - цель: выбросы и мусор
- Y =
- Barplot пропусков:
- X = столбец, Y = доля NaN (только где NaN > 0)
3. Одномерный анализ (univariate)
3.1. Числовые признаки (показы/клики/заказы)
Таблицы
- Для каждой группы (
active_imp_*,passive_imp_*,active_click_*,passive_click_*,orders_amt_*):count, mean, median, std, min, q25, q75, max, share_zero, p95, p99
- Агрегаты по всем категориям:
- создать
active_imp_total,passive_imp_total,active_click_total,passive_click_total,orders_amt_total - таблица
describe()для них
- создать
Графики
- Гистограммы (лог-масштаб или
log1p) для каждой категории и типа:active_imp_ent,active_click_ent,passive_imp_ent,orders_amt_ent, …
- Boxplot для агрегатов:
active_imp_total,passive_imp_total,active_click_total,passive_click_total,orders_amt_total
3.2. Категориальные признаки
Таблицы
- Распределение
gender_cd: counts, доли,unknown - Распределение
device_platform_cd: counts, доли - Возрастные группы:
<25,25–34,35–44,45–54,55+- таблица: группа → число клиентов → доля
Графики
- Barplot пола: X =
M/F/Unknown, Y = доля - Barplot платформ: X = platform, Y = доля
- Гистограмма возраста
4. Время и сезонность
Создать дневные агрегаты:
- сумма показов/кликов/заказов по дням
- метрики:
CTR_active = active_click_total / active_imp_totalCTR_passive = passive_click_total / passive_imp_totalCR_click2order = orders_amt_total / (active_click_total + passive_click_total)CR_imp2order = orders_amt_total / (active_imp_total + passive_imp_total)
- день недели:
day_of_week
Таблицы
daily.describe()по дневным агрегатам- Таблица по дням недели:
day_of_week→ среднееimpressions, clicks, orders, CTR, CR
Графики
- Линейные временные ряды:
business_dtvs total impressionsbusiness_dtvs total clicksbusiness_dtvs total orders
- Линии CTR/CR во времени (rolling mean 7 дней по желанию):
active_ctr,passive_ctr,cr_click2order
- Сезонность по дням недели:
- barplot для
active_ctr,passive_ctr,cr_click2order
- barplot для
- (Опционально) календарная heatmap заказов/CTR
5. Парные связи (bivariate)
Таблицы
- Корреляции Спирмена (на уровне клиента/дня):
- между всеми числовыми признаками +
age
- между всеми числовыми признаками +
- Для каждой категории:
- биннинг показов по квантилям → средний
imp, click, CTR, orders, CR
- биннинг показов по квантилям → средний
Графики
- Scatter/hexbin «показы → клики»:
active_imp_*vsactive_click_*passive_imp_*vspassive_click_*
- Scatter «клики → заказы»:
*_click_*vsorders_amt_*
- CTR по бинам показов (линия/бар)
- CR по бинам кликов (линия/бар)
- Heatmap корреляций
6. Демография и устройство vs эффективность
Агрегировать по клиенту:
- суммы показов/кликов/заказов
- CTR/CR на уровне клиента
- добавить
gender_cd,age_group,device_platform_cd
Таблицы
- По полу:
- средние
impressions, clicks, orders, CTR, CR
- средние
- По возрастным группам:
- те же метрики
- По платформам:
- те же метрики
- Тесты гипотез (Mann–Whitney / t-test):
- разница CTR/CR между группами
Графики
- Barplot CTR/CR по полу
- Barplot CTR/CR по возрастным группам
- Barplot CTR/CR по платформам
- Boxplot заказов по возрастным группам
- Stacked bar: возраст → доли категорий заказов (наполнение корзины сервисами)
7. Поведение по клиенту и сегментация
7.1. Простые сегменты
Флаги на уровне клиента:
has_active_comm,has_passive_commhas_any_orderorder_categories_count(в скольких категориях есть заказ)
Таблицы
- Сегменты каналов:
only_active,only_passive,both- доля клиентов, средние заказы, CTR/CR
- Сегменты мультикатегорийности:
1,2,3+категорий заказов- средние коммуникации/заказы, демография
Графики
- Barplot по сегментам каналов:
- средние заказы, CTR/CR
- Barplot по числу категорий заказов
- Stacked bar: сегменты → пол/возраст (по желанию)
7.2. Кластеризация (расширенный EDA)
- Вектор фичей:
- суммы по категориям + CTR/CR + доли заказов
- Нормализация
- KMeans / GMM, 3–7 кластеров
Таблицы
- кластер → размер → средние фичи → краткая интерпретация
Графики
- Профили кластеров (bar/radar)
- Scatter PCA/UMAP: цвет = кластер
8. Воронка: показы → клики → заказы
Таблицы
- Общая воронка:
channel_type,category,impressions,clicks,orders,CTR,CR_click2order,CR_imp2order
- Воронка по сегментам:
- пол/возраст/платформа → те же метрики
Графики
- Funnel chart active vs passive (общий)
- Barplot CTR по категориям + сравнение active/passive
- Barplot CR по категориям + сравнение active/passive
- Funnel/Bar по возрастным группам
9. Временные лаги между коммуникациями и заказами
С учётом «поздних покупок» (особенно travel).
9.1. Лаги на дневном уровне
Таблицы
- Лаговые признаки
lag1..lag7для показов/кликов - Кросс-корреляция:
- lag → corr(orderst, impressions{t-lag})
Графики
- Линия «lag vs корреляция» по:
hotel,avia(и др. при желании)- active vs passive
9.2. Лаги на клиентском уровне
Таблицы
first_imp_date,first_click_date,first_order_datedays_to_order- Квантили
days_to_orderпо категориям
Графики
- Гистограмма/ECDF
days_to_orderпо категориям
10. Мультиканальность и «заспамленность»
Таблицы
contact_days,avg_impressions_per_contact_day,max_impressions_per_day- Бины по
avg_impressions_per_contact_day→ средний CTR/CR
Графики
- Гистограмма
avg_impressions_per_contact_day - Линия/бар: CTR/CR vs уровень спама
11. Простые модели как часть EDA
11.1. Бинарная модель «есть заказ / нет заказа»
Target:
has_any_order
Features:
- суммы показов/кликов по типам и категориям
- CTR/CR
- демография и платформа
Таблицы
- Логистическая регрессия:
- коэффы, p-value, odds ratio
- Feature importance из дерева/лесов
Графики
- Barplot важностей
- (Опционально) partial dependence для 2–3 ключевых фичей
12. Гипотезы и статтесты
Примеры гипотез
CTR_active > CTR_passive- CR различается между категориями сервисов
- CTR/CR различаются по полу/возрасту/платформе
- «заспамленность» снижает CTR/CR после порога
Таблица гипотез
- гипотеза, H0/H1, тест, p-value, вывод, бизнес-интерпретация
Графики для поддержки — использовать из разделов 4–10 (барчики/боксплоты).
13. Итоговая документация
- Резюме выводов:
- качество данных
- эффективность каналов/категорий
- сегменты, где коммуникации лучше/хуже работают
- лаги (как быстро покупают после контактов)
- признаки «усталости» от коммуникаций
- Список проблем данных и принятых решений по чистке
- Список инсайтов для бизнеса
- Список фичей для будущих моделей
- Следующие шаги:
- подготовка ML-пайплайна
- список A/B-гипотез
- какие данные добрать (если нужно)