计算结果是否可信,常常取决于计算之前做了什么。我的学习习惯是先写下数据的含义,再开始画图和计算。
01 / 先说明每一列是什么
一份时间序列至少需要清楚的时间字段和观测值。日期是交易日期还是自然日期?数值是收盘价、指数点位,还是经过复权处理的价格?不同口径不能直接混在一起使用。
在文件旁保留一份简短说明,记下数据来源、下载时间、单位、时区和处理方式。这样隔一段时间再打开文件,仍能知道每一列代表什么。
02 / 用小样本检查,而不是只看行数
下面是专门为学习构造的示例,不对应任何真实证券:
| 日期 | 观测值 | 检查结果 |
|---|---|---|
| 2026-01-05 | 100.0 | 有效记录 |
| 2026-01-06 | 101.5 | 有效记录 |
| 2026-01-06 | 101.5 | 重复日期,需核实 |
| 2026-01-07 | 空值 | 缺失,需确认原因 |
重复记录可能来自重复下载,也可能是同一天不同时间的观测。不要在没有理解含义之前直接删除。缺失值也不等于零,把缺失价格填成零会制造没有发生过的巨大变化。
03 / 让清洗步骤可以重做
- 保留原始文件,不在原件上直接修改。
- 统一日期格式,按照时间升序排列。
- 核对重复项、缺失项和明显异常的数值。
- 记录每一次处理的理由,并保存清洗后的新文件。
- 对比处理前后的行数、起止日期与数值范围。
一个容易忽略的区别
自然日没有记录,并不一定意味着数据丢失。分析交易数据时,应先区分休市日、停牌和真正的缺失记录。
这次学习留下的问题
遇到缺失值时,保留缺失、删除记录和向前填充各有什么影响?我的做法是先说明分析目的,再比较处理方法对结果的影响,而不是给所有数据使用同一种填充规则。