2. 高频数据基础

📊 高频数据清洗基础

数据质量问题分类 · 清洗流程总览
📌 数据质量问题分类 缺失 · 异常 · 重复 · 时间戳错乱

① 缺失值

  • NaN 空值 / None / 占位符 (如 -999)
  • 结构性缺失 传感器离线、网络丢包
  • 隐式缺失 时间戳跳变无记录
📎 常见处理: 前向填充 · 线性插值 · 删除阈值

② 异常值

  • 统计异常 3σ · IQR · Z-score
  • 业务异常 价格≤0 · 涨跌幅>50%
  • 时序异常 尖峰 · 断崖 · 平台毛刺
📎 常用检测: MAD · 孤立森林 · 滑动窗口分位数

③ 重复值

  • 完全重复 所有字段一致 (多笔相同)
  • 部分重复 关键字段重复 (如时间+价格)
  • 业务重复 同一笔订单多次上报
📎 去重策略: 精确去重 · 相似度去重 · 窗口去重

④ 时间戳错乱

  • 乱序 后到先处理 (out-of-order)
  • 漂移 时钟不同步 · 时区错误
  • 重复/间隙 毫秒级重复戳 · 跳秒
📎 矫正方式: 排序 · 对齐NTP · 重采样
⚙️ 清洗流程总览 高频数据流水线
📥 原始高频 🧹 缺失·重复 填充 · 去重 ⚠️ 异常检测 IQR · 孤立森林 ⏱️ 时间戳矫正 排序 · 对齐 📁 ← 高频数据清洗流水线:从原始数据到可用特征 →
阶段操作高频场景要点
① 缺失值处理前向填充 · 插值 · 删除使用 ffill 限制最大间隔;高频数据慎用删除
② 重复值去除基于时间戳+价格去重毫秒级窗口去重;保留首条或最后一条
③ 异常值检测滚动分位数 · 3σ · 业务规则高频用滑动窗口MAD;避免误杀有效波动
④ 时间戳矫正排序 · 时区转换 · 重采样对齐到交易所时钟;处理闰秒/夏令时
⑤ 质量验证完整性 · 顺序性 · 边界检查输出清洗报告;记录丢弃比例
🧪 代码片段 · 高频清洗骨架

# 高频数据清洗 pipeline (Python 伪代码)
import pandas as pd
import numpy as np

def clean_high_freq(df: pd.DataFrame) -> pd.DataFrame:
    # 1. 时间戳排序 & 索引化
    df = df.sort_values('timestamp').reset_index(drop=True)
    
    # 2. 缺失值前向填充 (限制最大间隔 5 笔)
    df['price'] = df['price'].ffill(limit=5)
    df['volume'] = df['volume'].fillna(0)
    
    # 3. 去除完全重复行
    df = df.drop_duplicates(subset=['timestamp', 'price', 'volume'])
    
    # 4. 异常值检测 (滚动 IQR)
    rolling_iqr = df['price'].rolling(20).quantile(0.75) - df['price'].rolling(20).quantile(0.25)
    median = df['price'].rolling(20).median()
    df['is_anomaly'] = (np.abs(df['price'] - median) > 3 * rolling_iqr)
    df = df[~df['is_anomaly']].copy()
    
    # 5. 时间戳重采样 (可选)
    # df = df.set_index('timestamp').resample('1ms').ffill().reset_index()
    return df
            
✅ 缺失值
前向填充 · 插值 · 标记
✅ 异常值
MAD · 分位数 · 业务规则
✅ 重复值
毫秒级窗口 · 关键字段
✅ 时间戳错乱
排序 · 对齐 · 重采样