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)
panel = load("panel").copy()
key = ["symbol","date"]
duplicates = panel.duplicated(key,keep=False)
print("重复键记录:",int(duplicates.sum()))
clean = panel.drop_duplicates(key,keep="last").copy() # 仅教学副本按输入最后一条保留
clean["date"] = pd.to_datetime(clean["date"],errors="raise")
clean["close"] = pd.to_numeric(clean["close"],errors="raise")
clean = clean.sort_values(key).reset_index(drop=True)
assert not clean.duplicated(key).any()
assert len(clean)<=len(panel)
assert clean["date"].notna().all()
print("清洗前/后:",len(panel),len(clean))
print(clean.isna().sum().to_string())
clean.to_csv(OUT / "pd_clean_panel.csv",index=False)
s=pd.Series([1,None,3],dtype="Float64")
assert s.count()==2 and len(s)==3
assert s.sum(min_count=3) is pd.NA
