数据清理(Clean Data XLS)
什么是数据清理?
在金融分析中,“干净的数据”是一切分析的前提。现实中,从各种来源获取的原始数据往往存在各种质量问题:多余的空格、不一致的大小写(USA vs usa vs Usa)、数字被存为文本(Excel 左上角的绿色三角形)、日期格式混乱(2024/3/8 vs March 8, 2024 vs 2024-03-08)、重复行等等。 如果不先清理这些问题就直接做分析,结果可能完全不可靠 —— 比如 VLOOKUP 因为前导空格而匹配失败,或者 SUM 因为部分数字被存为文本而漏算。 这个技能检测数据中的各种质量问题,提出修复建议,并在用户确认后执行清理 —— 尽可能使用公式(保持透明和可审计),而非直接覆盖原始数据。为什么重要
- Comps 分析数据整合 —— 从多个来源合并的公司数据需要统一格式
- M&A 数据室清理 —— 尽职调查中获取的原始数据往往格式混乱
- 财务模型输入 —— 垃圾数据进去就是垃圾结果出来
- 报告生成 —— 输出格式的一致性影响专业形象
核心概念
| 中文术语 | 英文术语 | 说明 |
|---|---|---|
| 空白字符 | Whitespace | 前导/尾随空格、双空格 |
| 大小写不一致 | Inconsistent Casing | 同一列中出现 USA、usa、Usa |
| 文本型数字 | Numbers Stored as Text | 数字被存为文本格式,无法参与计算 |
| 日期格式混乱 | Mixed Date Formats | 同一列中日期格式不统一 |
| 重复行 | Duplicates | 完全相同或近似相同的行 |
| 混合类型列 | Mixed-Type Column | 一列中 98% 是数字但有 3 个文本值 |
| 编码问题 | Encoding Issues | 乱码字符 |
| 辅助列 | Helper Column | 放置清理公式的相邻列,保留原始数据不变 |
工作流程
检测问题
在提出任何修复建议之前,先扫描所有问题类型:
| 问题 | 查找内容 |
|---|---|
| 空白字符 | 前导/尾随空格、连续双空格 |
| 大小写 | 分类列中的不一致(usa / USA / Usa) |
| 文本型数字 | 数值被存为文本;数字单元格中的 $、,、% |
| 日期 | 同一列中混合格式 |
| 重复项 | 完全重复行和近似重复项 |
| 空值 | 数据列中的空白单元格 |
| 混合类型 | 数字列中混入文本值 |
| 公式错误 | #REF!、#N/A、#VALUE!、#DIV/0! |
提出修复建议
展示汇总表,修改前必须获得用户确认:
| 列 | 问题 | 数量 | 修复方案 |
|---|---|---|---|
| 公司名称 | 前后空格 | 47 行 | 辅助列 =TRIM(A2) |
| 营收 | 文本型数字 | 23 行 | =VALUE(SUBSTITUTE(B2,"$","")) |
| 国家 | 大小写不一致 | 15 行 | =UPPER(C2) |
| 日期 | 格式混乱 | 31 行 | =DATEVALUE(D2) |
| 行号 | 完全重复 | 8 行 | 确认后删除 |
核心原则:公式优于覆盖
尽可能使用公式(在辅助列中),而不是直接覆盖原始数据。 这保持了数据转换的透明性和可审计性。| 清理任务 | 公式方法 |
|---|---|
| 去除空格 | =TRIM(A2) |
| 转大写 | =UPPER(B2) |
| 转首字母大写 | =PROPER(C2) |
| 去除货币符号 | =VALUE(SUBSTITUTE(D2,"$","")) |
| 去除千分位逗号 | =VALUE(SUBSTITUTE(E2,",","")) |
| 解析日期 | =DATEVALUE(F2) |
| 去除百分号 | =VALUE(SUBSTITUTE(G2,"%",""))/100 |
- 用户明确要求
- 没有合理的公式替代方案(如编码/乱码修复)
如何添加到本地环境
最佳实践
- 先检测后修复 —— 在修改任何内容之前,先展示完整的问题清单
- 分类别逐步执行 —— 不要一次性修改所有问题
- 绝不在未经确认的情况下删除重复行 —— 错误的去重可能不可逆地损毁数据
- 近似重复需要人工判断 —— “Apple Inc.” vs “APPLE INC” 是同一家公司吗?