Files
ts-anomaly-td/ts_anomaly_td/io_csv.py
T
2026-06-11 15:32:30 +08:00

36 lines
1.1 KiB
Python

"""CSV 读取模块:读 timestamp,value,label 三列,返回归一化元组。"""
from pathlib import Path
import pandas as pd
def read_csv(path: str | Path) -> tuple[list[int], list[float], list[int]]:
"""读 timestamp,value,label CSV 文件。
Args:
path: CSV 文件路径
Returns:
(timestamps_ms, values, labels) 三元组
- timestamps_ms: 毫秒精度 Unix 时间戳
- values: 浮点数值列表
- labels: 整数标签列表(0=正常, 1=异常)
Raises:
FileNotFoundError: 文件不存在
ValueError: 缺少 timestamp 或 value 列
"""
df = pd.read_csv(path)
if "timestamp" not in df.columns or "value" not in df.columns:
raise ValueError(f"CSV 缺少 timestamp 或 value 列: {path}")
timestamps = pd.to_datetime(df["timestamp"])
timestamps_ms = (timestamps.astype("int64") // 10**6).tolist()
values = df["value"].astype(float).tolist()
labels = df["label"].fillna(0).astype(int).tolist() if "label" in df.columns else [0] * len(df)
return timestamps_ms, values, labels