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)
users=load("users").copy()
users["signup_date"]=pd.to_datetime(users["signup_date"],errors="raise")
users["channel"]=users["channel"].astype("string").str.strip().str.lower()
users["country"]=users["country"].astype("category")
users["signup_month"]=users["signup_date"].dt.to_period("M").astype("string")
assert users["signup_date"].notna().all()
assert str(users["country"].dtype)=="category"
print(users[["user_id","signup_month","channel","country"]].head().to_string(index=False))
raw=pd.Series(["  Email ",None,"PAID SEARCH"],dtype="string")
clean=raw.str.strip().str.lower()
assert clean.iloc[0]=="email" and pd.isna(clean.iloc[1])
print("字符串:",clean.tolist())
utc=pd.to_datetime(pd.Series(["2026-01-01T18:00:00Z"]),utc=True)
local=utc.dt.tz_convert("Asia/Shanghai")
assert local.dt.date.astype(str).iloc[0]=="2026-01-02"
print("上海日期:",local.dt.date.astype(str).iloc[0])
