1.不要修改原始数据
保持原始数据源完好无损很重要。您可能会发现您对数据所做的更新无效。您可能还会找到一种更有效的更新方法,并且您将希望对这些更新进行回归测试。
始终使用数据副本,并添加包含任何已处理更正的列/属性/元数据。
例如,如果您的数据是一个 .csv 文件,其中的城市名称包含多个拼写错误:
1. Copy the .csv to a new file
2. Add a column for containing "adjusted_city_name"
3. Copy data from the city_name column to the
adjusted_city_name column and make corrections in that column.
2. 记录提议的更改
您想要对数据进行的任何更改都应记录在案,以便可以继续复制它们。
每次更改文档时的版本控制和时间戳。这将有助于日后进行故障排除。
明确。不要简单地陈述“正确的大小写问题”,陈述“确保每个城市名称的第一个字母以大写字母开头,其余字母小写”。
使用为管理数据清理而构建的任何自动化例程的引用更新文档。
3. 确定标准的数据清洗技术
无论您使用 perl、python、java、特定实用程序、手动过程还是其他东西都不是问题。问题是将来您希望将数据清理过程交给其他人。如果他们必须了解 12 种不同的数据清理技术,那么委派清理过程将非常困难。
4. 标准化工作流程
应该有一种标准的方式来处理新数据。理想情况下,这将像将文件放到特定位置一样简单,并且可预测的自动化过程会对其进行清理,并将清理过的数据集移交给下一个处理步骤。
5. 做尽可能少的改变是绝对必要的
进行容错分析总是比对数据做出假设更好。
6.避免手动更新
这总是很诱人,但人们容易出错,这又使委派变得困难。
手动处理注意事项
为了更完整地解决关于是否有一种“好”的手动处理方式的原始问题,我会说不,没有。我的回答是凭经验得出的,不是我随便做出的。
由于客户坚持认为手动数据清理过程很好并且可以在内部处理,我有不止一个项目浪费了几天的时间。您不希望您的项目依赖于单个人来完成不同规模的基于判断的任务。
让个人根据他们将要做什么来构建和记录规则集比让他们手动清理数据要好得多。(然后自动化该规则集)
如果自动化最终使您失败或根本不可能,那么将规则集委派给没有特定领域知识的其他人的能力至关重要。
最后,可以将诸如正确城市名称之类的例程应用于其他数据集。