from pathlib import Path
import pandas as pd
import numpy as np
from _shared import load
ROOT = Path(__file__).resolve().parents[1]
OUT = ROOT / "outputs"
OUT.mkdir(exist_ok=True)
events=load("events").copy()
events["day"]=pd.to_datetime(events["event_time"]).dt.normalize()
daily=events.groupby(["day","event_type"],dropna=False).size().rename("event_count").reset_index()
assert not daily.duplicated(["day","event_type"]).any()
wide=daily.pivot(index="day",columns="event_type",values="event_count").fillna(0).astype("int64")
long=wide.reset_index().melt(id_vars="day",var_name="event_type",value_name="event_count")
assert int(long["event_count"].sum())==len(events)
assert int(wide.to_numpy().sum())==len(events)
small=pd.DataFrame({"day":["d1","d1","d1"],"type":["view","view","cart"],"n":[1,2,4]})
try:
    small.pivot(index="day",columns="type",values="n")
except ValueError:
    print("pivot 正确拒绝重复键")
else:
    raise AssertionError("pivot 应拒绝重复组合")
table=small.pivot_table(index="day",columns="type",values="n",aggfunc="sum",fill_value=0)
assert table.loc["d1","view"]==3
print(wide.head().to_string())
wide.to_csv(OUT / "pd_events_wide.csv")
