Files
dano2025/preanalysis_old_bad/eda_report.md
2025-12-14 17:07:57 +03:00

4.0 KiB
Raw Blame History

EDA «Коммуникации в Городе»

Кратко о данных

  • 118189 строк, 8339 клиентов, 35 исходных столбцов + инженерные (totals, CTR/CR, флаги).
  • Диапазон дат: 20250109 — 20251104 (284 дня).
  • Категории сервисов: ent, super, transport, shopping, hotel, avia; активные и пассивные показы/клики, заказы по категориям.
  • Дубликаты по ключу (id, business_dt): нет.

Качество данных

  • Пропуски: несущественные (NaN почти нет), отрицательных значений не обнаружено.
  • Возраст: 1580 лет, p1/p99 = 22/68, мусора (<14 или >100) нет.
  • Гендер: 68.5% M, 31.5% F. Платформа после нормализации: ~52.5% iOS, ~46.7% Android, 1.1% iPadOS.
  • Признаки «заспамленности» и агрегаты на клиента добавлены: imp/click/order totals, CTR/CR, contact_days, avg_impressions_per_contact_day, order_categories_count.

Каналы и эффективность (агрегировано по всем строкам)

  • Active impressions ≈ 219.5k, passive impressions ≈ 473.1k.
  • Active clicks ≈ 147.3k (CTR_active ≈ 0.67), passive clicks ≈ 18.1k (CTR_passive ≈ 0.038).
  • Заказы всего: 12439; CR click→order ≈ 7.5%, CR imp→order ≈ 1.8%.
  • Дневных точек: 284; daily агрегаты подготовлены (CTR/CR, day_of_week).

Демография и устройство vs эффективность (по клиентским агрегатам)

  • Таблицы по полу/возрастным группам/платформам готовы в 04_clients_segmentation.ipynb (средние impressions/clicks/orders и CTR/CR).
  • Гипотезы: в 05-м ноутбуке добавлены примеры MannWhitney по CTR active vs passive и по полу; можно расширять на платформы и возраст.

Лаги и сезонность

  • Дневные ряды и метрики CTR/CR по времени и по дням недели — см. 03_time_and_lags.ipynb.
  • Лаги: реализованы кросс-корреляции orders vs impressions/clicks (hotel, avia) для lag 07; по клиентам — first_imp/click/order и распределения дней до заказа.

Сегменты и «усталость»

  • Сегменты каналов: only_active / only_passive / both + метрики; бины по числу категорий заказов.
  • «Заспамленность»: bin по avg_impressions_per_contact_day с CTR/CR; stacked доли категорий заказов по возрасту.

Модели как часть EDA

  • На клиентском уровне собран датасет для задачи has_any_order; pipeline с OHE + StandardScaler + LogisticRegression и RandomForest (ROC-AUC и важности).
  • Выводы по коэффициентам/важности доступны в 05_exploratory_models.ipynb.

Что делать дальше

  • Прогнать все ноутбуки end-to-end (данные готовы, зависимости в .venv): jupyter lab или jupyter nbconvert --execute.
  • Уточнить нормализацию категорий (при необходимости) и при желании сохранить dataset/ds_clean.parquet (флаг в 01_load_and_clean.ipynb).
  • Добавить/актуализировать бизнес-гипотезы (категории, платформы, возраст) и зафиксировать p-value в таблице гипотез.
  • При необходимости усилить визуализацию: календарные heatmap по CTR, ECDF лагов по каждой категории, PDP для топ-фичей модели.