阶段1数据基础●●●●●

脏数据图鉴:缺失、为零、跳变、重复

我的掌握程度:
q-065精讲

先掌握这个答案

脏数据图鉴:①缺失值(NaN):停牌、未披露的财务字段——原则:先想缺失原因(可能本身是信号,如「无分析师覆盖」),行情缺失标记停牌而非删除;②价格为0:接口错误或未上市——必须剔除(0参与计算会污染一切);③异常跳变:未复权的除权(q-013)或数据错误——用复权+常识检查(日收益>±21%必查);④重复行:多次抓取拼接——drop_duplicates;⑤单位不一致:手vs股、元vs万元——统一时显式转换并注释。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

填充前先解释为什么缺失

停牌、未披露、窗口不足、接口失败应分别标记。沿用上一值不等于当日可交易;bfill可能把未来信息带回过去。中位数填充也会改变分布,需在训练范围内估计并做敏感性比较。

本阶段实战方法 · 把行情数字变成可比较的收益

看股票、基金或策略业绩时,先对齐本金、起止日期、现金流与费用。

  1. 选一个固定区间,记录期初价值、期末价值、分红、出入金和交易费用。
  2. 没有中途出入金时,用(期末价值+已取出分红-期初价值-费用)÷期初价值计算收益;有出入金时先区分时间加权与资金加权。
  3. 用相同区间的基准作比较,同时记录最大亏损;不要单凭一次盈利评价能力。

使用边界

  • 不同期限的收益不可直接排名;年化只是换算,不是未来收益承诺。
  • 模拟价格不是实时行情。普通股票交易手数、T+1和费用应按具体市场规则核对。
背景 · 从一个困惑说起
新手想象的数据:整齐的表格,每行一个交易日。真实的数据:停牌日整行消失、某些行成交量为0、价格莫名跳变30%、同一日期出现两次、财务数据大片NaN——脏是常态,干净才是例外。
由此产生的问题
脏数据有哪些典型形态?各自的来源和处理原则是什么?
核心概念
脏数据图鉴:①缺失值(NaN):停牌、未披露的财务字段——原则:先想缺失原因(可能本身是信号,如「无分析师覆盖」),行情缺失标记停牌而非删除;②价格为0:接口错误或未上市——必须剔除(0参与计算会污染一切);③异常跳变:未复权的除权(q-013)或数据错误——用复权+常识检查(日收益>±21%必查);④重复行:多次抓取拼接——drop_duplicates;⑤单位不一致:手vs股、元vs万元——统一时显式转换并注释。
为什么需要它
①垃圾进垃圾出:一个价格为0的行能让整列均值/因子全废;②清洗即理解:处理脏数据的过程强迫你理解市场机制(为什么停牌、为什么缺失),这是最好的学习;③职业占比真相:量化研究员70%时间在数据上——本组题目就是那70%的预演。
实际应用场景
标准清洗函数顺序:去重→剔价格为0→标记停牌→前向填充(限价类)→异常值检查(日收益超界报告)→统一单位。把清洗日志(剔除了什么、为什么)写进数据管道。
与之前知识的联系
q-060字段、q-066停牌、q-064复权都是本图鉴的具体条目。q-071的数据校验是脏数据的系统性防线。
⚠ 常见误解
  • dropna一把梭:删除行会引入偏差(停牌股系统性消失);先理解缺失机制再决定删/填/标记
  • fillna(0)简单有效:0在很多字段有真实含义(如换手率为0),填0=制造假数据
  • 数据源会给干净数据:商业数据也不干净,清洗是不可外包的核心能力

🤖 AI导师

导师会先检查你的前置知识(日线字段),再用案例、公式和代码帮助理解。此功能需要先启用服务。