一、数据清洗概述:投研数据的特点、脏数据的来源与类型、数据清洗在投研流程中的位置

各位同学好,我是老张。今天咱们正式进入《投研平台数据清洗实战》的第一章。

说实话,我见过太多团队在投研平台搭建上栽跟头。不是算法不够强,也不是服务器不够快,而是——数据太脏。你想想看,一个模型跑出来结果漂亮得不行,结果一查,底层数据全是错的。嗯,这种坑我踩过不止一次。

1.1 投研数据到底有什么特点?

投研数据跟普通业务数据不一样。我个人习惯把它总结为四个字:多、杂、变、缺

  • :数据量巨大。A股四千多只股票,每只股票每天产生几千条tick数据,再加上财务数据、舆情数据、另类数据……一天下来几个TB很正常。
  • :来源五花八门。交易所、财经网站、上市公司公告、社交媒体、卫星图像……格式从CSV到JSON到PDF到图片,什么都有。
  • :数据规则经常变。比如财报披露口径调整、股票代码变更、复权因子更新。我在项目中遇到过,一个复权因子没处理好,回测结果直接翻了个倍。
  • :缺失值极其普遍。停牌、退市、数据源中断、节假日……你永远不知道下一个缺失值会出现在哪里。

核心观点:投研数据清洗不是"锦上添花",而是"生死攸关"。脏数据进,垃圾结果出。这是铁律。

1.2 脏数据从哪里来?

脏数据不是凭空冒出来的。我把它分成三大类来源:

来源分类 典型场景 我踩过的坑
数据采集层 爬虫抓取错误、API接口超时、数据源本身有误 某次爬取财报数据,网页改版后字段错位,我硬是没发现,导致PE算出来全是负数
数据传输层 网络丢包、编码转换错误、时间戳时区问题 跨境数据时区没对齐,美股数据跟A股数据混在一起,回测结果完全失真
数据存储层 数据库字段截断、类型转换异常、并发写入冲突 某次浮点数精度丢失,导致收益率计算差了0.01%,别小看这0.01%,高频策略里这就是天壤之别

为什么会这样?说白了,投研数据链条太长,任何一个环节出问题,最终都会反映到数据质量上。

1.3 脏数据的常见类型

我做了这么多年数据清洗,把脏数据归纳为以下六种类型。你对照着看,基本能覆盖90%以上的问题:

  1. 缺失值:最常见。比如某只股票某天没有交易数据,或者财报里某个字段为空。
  2. 重复值:同一个数据出现多次。比如同一笔交易被记录了两次,或者同一份财报被重复导入。
  3. 异常值:数据明显超出合理范围。比如某股票日涨幅1000%,或者市盈率变成负数。
  4. 格式不一致:同一字段在不同数据源里格式不同。比如日期有的是"2024-01-01",有的是"01/01/2024"。
  5. 逻辑错误:数据本身没问题,但逻辑上说不通。比如开盘价高于最高价,或者成交量是负数。
  6. 噪声数据:数据本身正确,但包含大量无关信息。比如财报文本里夹杂着广告、注释、格式符号。

避坑指南:我曾经接手过一个项目,团队花了两周时间清洗异常值,结果发现80%的"异常值"其实是除权除息导致的正常价格跳变。所以,清洗之前一定要先理解业务逻辑。

1.4 数据清洗在投研流程中的位置

很多新手觉得数据清洗就是"预处理"的一小步。其实不是。我习惯把投研流程画成下面这张图:

投研平台数据流程全景图 数据采集 交易所/财报/舆情 数据清洗 缺失值·异常值·重复值 格式统一·逻辑校验 数据存储 数据库/数据湖 建模 数据质量反馈回路 数据清洗不是一次性工作,而是贯穿整个投研流程的持续过程 原始数据 → 脏数据 清洗规则引擎 干净数据 → 分析 清洗规则持续迭代

你看这张图就明白了。数据清洗不是孤立的环节,它连接着数据采集和后续分析。说白了,它就是投研平台的"守门员"。

我个人习惯把数据清洗放在数据入库之前。为什么?因为一旦脏数据进了数据库,再想清理就难了。你想想看,下游的模型、报表、API都在用这些数据,你改一个字段可能影响几十个系统。

警告:千万不要等到建模阶段才发现数据有问题。我在项目中见过最惨的案例——团队花了三个月做因子挖掘,结果发现底层数据的时间戳全部偏移了一天。三个月白干。

1.5 数据清洗的核心原则

最后,我总结几条原则,你记下来,以后做项目时对照着看:

  • 可追溯:每一次清洗操作都要有日志,出了问题能回滚。我曾经因为一个清洗规则写错了,导致整张表的数据被覆盖,还好有备份。
  • 可重复:清洗流程要能自动化、可重复执行。别每次都手动操作,那不是工程师该干的事。
  • 可验证:清洗前后要有对比报告,数据质量要有量化指标。比如缺失率从5%降到0.1%,异常值从100条降到0条。
  • 可迭代:清洗规则不是一成不变的。随着业务发展,新的脏数据类型会出现,规则要能快速更新。

嗯,第一章就讲到这里。记住一句话:数据清洗不是苦力活,而是技术活。后面几章我会带你一步步实战,从规则引擎到自动化清洗,从单表清洗到全链路治理。咱们慢慢来。


公众号:蓝海数据掘金营,微信deep3321