Dataprep 中的 csv 文件中的数值不匹配

Mismatched numeric values from a csv file in Dataprep

我很难理解为什么 Dataprep 会为我尝试从 .csv 文件导入的数值分配不匹配的值。

在我的 excel 中,一切看起来都很正常:

但在数据准备中,这是我得到的值:

似乎大多数数字都在 1000 以上。

我该如何防止这种情况发生?我将文件保存为 .csv

这很可能是由于 Excel 中的原始格式(特别是会计和 "Comma Style" 数字格式,因为它证明货币符号或符号是格式的一部分)。在这些情况下,您还会注意到从 Excel 粘贴时包含前导和尾随空白字符。

Dataprep 不会花太多时间为您考虑 — 在这种情况下,他们会采取保守的角度为您提供原始数据并让您决定是否需要重新格式化。

要确认 Dataprep 没有异常,您只需在文本编辑器中打开 CSV - 您很可能会看到那些相同的带引号的字符串。这在其他系统生成应用了数字格式的 CSV 时也很常见(强制值在 CSV 中引用字符串)。同样,任何包含逗号的文本列通常都会被引用(根据需要,因为这通常是分隔符并且具有特殊含义)。

谢天谢地,这是一个简单的修复。如果您希望它是 Decimal 类型,您还必须替换逗号。


简单替换:

接口:

  1. 格式 > Trim 前导引号和尾随引号
  2. 格式 > Trim 前导和尾随空格
  3. 替换 > 文本或图案(替换“,”;确保选中“匹配所有匹配项”框

生成的 Wrangle 脚本:

textformat col: col1 type: trimquotes
textformat col: col1 type: trimwhitespace
replacepatterns col: col1 with: '' on: ',' global: true

正则表达式(1步替换):

replacepatterns col: col1 with: '' on: /[^0-9.]/ global: true

在一个由不懂正则表达式的人组成的混合团队中,前者有时会更清晰一些,也不那么令人生畏——但除此之外,只需一步就可以轻松得多。