数据文件最佳实践(CSV 和 Excel)

阅读时间 1 分钟

目标: 制作一个看起来像干净的矩形表格的文件,以便软件可以无需猜测地读取它。

快速入门:5条黄金法则

  1. 每个文件(或每个工作表)一个表格。
  1. 恰好一个标题行(第一行),包含清晰、唯一的列名。
  1. 没有合并单元格、空白间隔行或数据内的合计。
  1. 保持每列只包含一种类型的内容(日期列中全是日期,数字列中全是数字,等等)。
  1. 使用标准格式 表示日期、货币、是/否和缺失值(详见下文)。

如何设置您的表格

1) 文件类型

  • CSV(逗号分隔值)对大多数工具来说是最佳选择。从 Excel 保存时,如果看到该选项,请选择 "CSV UTF-8(逗号分隔)"
  • Excel (.xlsx) 也可以。将原始数据放在名为 Data 的工作表上,并将摘要/数据透视表放在其他工作表上。

2) 布局(制作干净的矩形)

  • 第1行 = 仅列名。 标题上方不要有标题行、报告注释、徽标或日期。
  • 任何地方都不要有合并单元格(在 Data 工作表上)。
  • 表格内部不要有空白间隔行或列
  • 表格内部不要有总计或小计。将摘要放在单独的工作表上。

3) 列名(标题行)

  • 使名称 唯一简单(例如,order_idorder_dateamount)。
  • 避免使用标点符号和特殊字符。简短、描述性的名称最佳。
  • 如果单位很重要,请将其包含在名称中,例如 temperature_cweight_kg

4) 保持每列一致

  • ID 和代码(如客户编号、邮政编码):存储为 文本,这样前导零不会消失(00123 应保持为 00123)。
  • 数字:仅数字。不要包含 $% 或千位分隔符("1,234" 中不要有逗号)。
  • 货币:将数值放在一列中(不要有货币符号),将货币代码放在另一列中(例如,currency = USD)。
  • 百分比:选择一种样式并坚持使用——要么 0.25(表示 25%)要么 25.0 放在名为 percent 的列中。
  • 是/否:始终使用相同的两个值,例如 TRUE/FALSEYes/No
  • 日期:使用 YYYY-MM-DD(例如,2025-10-21)。
  • 日期和时间YYYY-MM-DD HH:MM:SS(如果已知,添加时区,如 +02:00Z 表示 UTC)。
  • 缺失值:将单元格留 空白。不要输入 N/A、空格或

5) 单位和类别

  • 如果数字需要单位,将单位放在标题中(length_m 添加单独的 unit 列。
  • 对于类别,使用简短的允许值列表(例如,status 可以是 newprocessingshippedcancelled)。

6) 键和重复项

  • 如果您的表格有自然的唯一标识符(如 order_id),请包含它并对每一行保持 唯一填充

Excel 用户的额外提示

  • 将原始数据放在名为 Data 的工作表上,仅包含 (不是公式)。如果您使用了公式,请复制工作表并 选择性粘贴 → 值 以创建 Data 工作表。
  • 取消隐藏所有行和列(在 Data 工作表上)。筛选器用于查看是可以的,但要确保隐藏的行/列没有隐藏您打算共享的数据。
  • 不要依赖 单元格颜色、粗体文本或注释 来传达含义——当软件读取数据时,这些内容不会随数据一起传递。

CSV 用户的额外提示

  • 保存时,如果可用,请选择 CSV UTF-8
  • 如果您通常在数字中使用逗号作为小数分隔符(例如,12,5 表示十二点五),请执行以下操作之一:
    • 将逗号小数替换为点(12.5),
    • 保存为 制表符分隔 文件而不是逗号分隔。

示例:

✅ 规范 CSV — 应当这样做

order_id,order_date,customer_id,amount,currency,shipped,ship_country
A-1001,2025-07-14,C-00789,1234.50,USD,TRUE,US
A-1002,2025-07-15,C-00791,89.99,USD,FALSE,DE
A-1003,2025-07-16,C-00792,0.00,USD,TRUE,GB

为什么这是好的

  • 只有一行表头;列名简洁且唯一。
  • 格式一致:ISO 日期(YYYY-MM-DD)、金额为纯数字(无 $ 和千位分隔符)、布尔值用 TRUE/FALSE、货币单独放到 currency 列。
  • 没有空白行、合计行或多余列。

❌ 问题 CSV — 应当避免

ACME North Region Sales Report
Generated on,10/21/2025
order id,order date,customer id,amount,currency,shipped,ship country,
A-1001,14/07/25,C-00789,$1,234.50,USD,Yes,US
A-1002,07/15/2025,C-00791,89,99,USD,y,DE
A-1003,2025-07-16,C-00792,N/A,USD,TRUE, GB
Totals,,,$1,324.49,USD,,

逐行说明问题

  • 第 1–2 行: 表头上方出现标题/元数据(不应出现在数据表中)。
  • 第 3 行: 表头不统一(有空格),且末尾多了一个逗号,会造成一个空白的额外列。
  • 第 4 行: 日期格式含糊(14/07/25),金额包含货币符号与千位分隔符($1,234.50),布尔值使用了不一致的 Yes
  • 第 5 行: 用逗号作小数点(89,99)会把一行拆成多列;布尔值用 y,与其他行不一致。
  • 第 6 行:N/A 表示缺失值(应留空);国家值前有前置空格 GB)。
  • 第 7 行: 在数据块中插入了合计行;金额再次出现货币符号与千位分隔符。

只要让你的文件像上面的 规范 CSV 一样干净一致,加载和分析基本都会顺利、准确。


数据字典(可选)

包含一个简单的列含义"速查表"——可以是:

  • Excel 中名为 Data Dictionary 的单独 工作表,或
  • CSV 旁边的小型 README 文本文件。

模板:

列名含义示例允许值/格式是否必需?单位/注释
order_id唯一订单标识符A-10234文本
order_date下订单的日期2025-10-21YYYY-MM-DD
amount订单总额(数字,无符号)1234.50数字(点小数)货币在 currency
currency金额的货币USDISO 代码(例如 USD)
shipped订单是否已发货TRUETRUE/FALSE

还有帮助的:一个小型 元数据 部分(来源、谁准备的、何时导出、时区和任何注意事项)。


上传前检查清单(复制/粘贴)


为什么这很重要

这些小选择可以防止软件猜测。当文件是具有可预测格式的干净矩形时,分析会更快、可重复且正确——不会因丢失前导零、错误读取日期或隐藏行而出现意外。

这篇文章解决了你的问题吗?