gadem
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
"""Категорийный анализ: собирает агрегаты по категориям и строит корреляции/квадратичную регрессию по заказам."""
|
||||
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
import sys
|
||||
@@ -47,6 +49,7 @@ COMBINED = {
|
||||
|
||||
|
||||
def load_raw(db_path: Path) -> pd.DataFrame:
|
||||
# Загружаем полную таблицу коммуникаций из SQLite
|
||||
conn = sqlite3.connect(db_path)
|
||||
df = pd.read_sql_query("select * from communications", conn, parse_dates=["business_dt"])
|
||||
conn.close()
|
||||
@@ -54,6 +57,7 @@ def load_raw(db_path: Path) -> pd.DataFrame:
|
||||
|
||||
|
||||
def build_client_by_category(df: pd.DataFrame) -> pd.DataFrame:
|
||||
# Агрегируем метрики по клиенту для каждой категории и считаем средние показы в день
|
||||
agg_spec = {f"{col}_{cat}": "sum" for col in BASE_COLUMNS for cat in CATEGORIES}
|
||||
client = (
|
||||
df.groupby("id")
|
||||
@@ -82,6 +86,7 @@ def add_combined_category(client: pd.DataFrame, name: str, cats: list[str]) -> p
|
||||
|
||||
|
||||
def plot_category_correlation(client: pd.DataFrame, cat: str, out_dir: Path) -> None:
|
||||
# Быстрая тепловая карта корреляций для одной категории
|
||||
cols = [f"{base}_{cat}" for base in BASE_COLUMNS]
|
||||
corr = client[cols].corr()
|
||||
|
||||
@@ -190,6 +195,7 @@ def plot_quad_for_category(
|
||||
q_high_overrides: dict | None = None,
|
||||
iqr_overrides: dict | None = None,
|
||||
) -> None:
|
||||
# Строим облако, тренд и квадратичную регрессию для конкретной категории с опциональными настройками
|
||||
y_col = f"orders_amt_{cat}"
|
||||
x_col = f"avg_imp_per_day_{cat}"
|
||||
out_dir = base_out_dir / y_col
|
||||
|
||||
Reference in New Issue
Block a user