数据清洗,通常也称为数据清理,实际上不是对数据库的单个活动,而是涉及多种技术使用的整个过程。他们的目标是:拥有一个干净、可靠、一致和完整的数据库。干净的数据无非就是高质量的数据,我们可以信任的数据,并可以根据这些数据做出正确的决策。在商业领域,据估计每年有25%的数据已过时,而受污染的数据会导致收入减少多达20%,这一点尤其重要。
作为一家每天处理客户贸易登记册和各种业务数据库中聚合数据清理工作的数据软件公司,我们今天将告诉您实践中的数据库清理是什么,数据清理和处理的各个阶段是什么?它们都是关于什么的。不过,首先让我们提供一些好的论据来解释为什么值得关注这个问题。
业务数据清理
如今,IT 系统每天生成和处理无数的数据。从技术角度来看,这对于我们的计算机、服务器或云解决方案来说并不是一个很大的挑战。面对如此大量的信息,挑战还在于:数据库的清洁,即保持数据库的高质量。最新报告的数据显示了这一挑战有多么巨大:
公司估计大约⅓有关客户和潜在客户的所有业务数据不准确,
55%的领导者不信任其组织拥有的数据,
只有50% 的人认为他们的 CRM/ERP 数据是干净的数据并且可以充分利用。
此外,多达95%的公司注意到与低数据质量相关的负面影响。
数据清理的好处
定期数据清洗的好处主要是解决脏数据在企业中产生的问题。低质量数据:
浪费人力和时间资源并产生额外成本,
降低分析的可信度和决策的准确性,
导致任务执行延迟,
对客户体验产生负面影响,
对客户的声誉和信任产生不利影响,
妨碍遵守监管义务所产生的规则。
5步数据清理示例
不同的数据类型需要不同的方法,因此根据正在处理的数据库的不同,用于清理数据的技术可能会略有不同。然而,通常商业客户数据库非常相似(它们总是包含公司注册号、电子邮件、地址等)。因此,在本文的其余部分中,我们将主要关注这些类型记录的数据清理。
数据清理是一个通常至少包含五个步骤的过程。包括:
数据验证
将数据格式化为通用值(标准化/一致性)
清理重复项
填充缺失数据与删除不完整数据
检测数据库中的冲突
下面我们描述每个阶段的数据清理是如何进行的,并附上简单的实现示例。
数据清理步骤 1:数据验证
任何在其数据库中拥有业务记录即公司数据的公司都清楚地知道其中许多数据应该并且可以检查其正确性。当然,我们可以假设所有公司识别号、邮政编码或电子邮件地址都已正确输入数据库,或者我们验证供应商的商业登记册肯定不包含错误,但实际上并非如此。。即使在最好的公共商业登记册中也可能出现错误数据,内部数据库也不例外,记录由员工手动输入。
这就是为什么数据验证,即数据验证是否满足一定的自上而下的条件和逻辑原则,是数据库清洗的第一阶段。
例如,让我们验证从某个 X 系统导入的公司的税号列表:
数据清理示例:公司税号的数据验证(原始数据)
如果您没有处理公司数据的经验,可能不知道每个纳税识别号的最后一位数字在许多国家/地区并非偶然。比如在波兰,这称为“校验位”,它是根据可验证的算法计算的。简而言之,波兰校验数位的验证包括将税号的前九位数字乘以权重(按顺序:6、5、7、2、3、4、5、6、7),对结果求和该乘法,然后将校验和除以 11。除法的余数应与税号中的最后一位数字相同。
如果我们计算上面给出的税号的校验和,结果发现其中三个是不正确的:4980117337、5260300292、000000000。因此,应该将它们从数据库中删除。
这一步数据库清理验证已经通过了以下税号:
数据清理示例:公司税号的数据验证(验证后的数据)
数据清理步骤 2:将数据格式化为通用形式
提高数据库质量的下一步是将数据标准化为统一的形式。此过程主要用于方便在数据库中搜索有关给定公司的信息。
在我们上面粘贴的表格中,可以立即看到一些税号是用破折号、空格或代表波兰的前缀“PL”编写的。因此,现在您需要将所有公司税号格式化为通用格式。如何?首先,由于我们知道这是波兰商业客户的数据库,因此我们可以安全地省略带有国家/地区代码的前缀。其次,在这种情况下,最好的选择是编写所有数字,不使用任何特殊字符分隔数字。
因此,我们得到以下结果:
数据清理示例:格式化数据
数字并不是我们可以通过这种方式带来一致形式的唯一值。电子邮件地址或网站地址也可以通过全部小写来形成通用形式。
数据清理步骤3:清理重复项
标准化数据格式后,数据清理的下一步是检查我们的数据库是否存在一些由于保存格式不同而无法提前检测到的重复项。
经过这样的分析,我们发现在我们的原始数据库中可以找到两条具有相同税号的记录:7540335340和754 033 53 40。
我们的表在删除重复项后如下所示:
数据清理示例:删除重复项
上面的例子仅限于按一列中的值查找重复项。然而,在实践中,某些数据定义了唯一的记录,其中更多数据排列在不同的列中。例如,您可以按名字和姓氏搜索重复的人员,在本例中使用两个单独的列 - 一个用于名字,另一个用于姓氏。
数据清理步骤 4:填充缺失数据与删除不完整数据
数据库卫生的下一步是防止拥有不完整的数据。任何稍微接触过数据的人都清楚,信息除了可靠和最新之外,还应该是完整的。 不完整的数据会污染数据库,降低其业务质量。
以供应商地址数据库为例,这些地址以以下格式保存在 CRM 中:省、自治区、邮政编码、城市和街道。
地址数据库的数据清理示例:填充缺失数据与删除不完整数据
假设在我们的系统中我们只想拥有完整的公司地址,即完整的数据集(不完整的数据对业务流程没有任何贡献)。我们可以通过两种方式探讨这个主题:
删除任何字段中具有空值的所有记录(这不是理想的解决方案,因为我们丢失了很多信息),
完成不完整的记录(这是一个更好的选择,考虑到可以根据城市名称或邮政编码轻松完成省或公社),并且仅完成无法通过补充检索的内容(在本例中,例如集带有空街道信息)删除。
当然,我们决定用第二种方式清理数据库。
为了促进这项任务并完全专业地执行它,有必要定义一些重复且详尽的规则,依次应用于该数据集。它们采用以下形式:
如果省份字段为空,我们将根据城市填写。
如果城市字段为空,我们检查是否可以根据邮政编码字段确定城市名称(我们并不总是能够做到这一点 - 各种较小的城镇和村庄有许多常见的邮政编码)。
如果公社/区字段为空,我们将根据城市和邮政编码填写。
我们引入了一些用于清除 street 列中数据的规则,例如清除空字符串或删除除 street 之外没有字母的值。
在最后一步中,我们删除了单个数据集的任何字段中仍保留空值的记录。
应用上述规则集后,我们清理后的公司地址数据库如下所示:
地址数据库的数据清理示例:填充缺失数据与删除不完整数据(清理后的表)
数据清理步骤 5:检测数据库中的冲突
我们数据质量改进过程的最后一步是所谓的冲突检测。在处理数据的术语中,冲突是指矛盾或相互排斥的数据。正如您可以轻松猜到的那样,正确执行数据卫生的目的是追踪所有数据并正确标记它们。
继续使用地址数据库的示例,例如,我们可以检查邮政编码、城市和公社是否与输入的省份匹配,或者是否在某处存在冲突。执行如此快速的分析,您会发现其中一条记录不正确:
数据清理示例:检测数据库中的冲突
在此数据集中,省份与提供的地址的其余部分不匹配。
面对这样的冲突,现在能做什么呢?如果您知道是谁将数据输入到系统中,请联系该人解释错误并输入正确的值。但是,如果由于某种原因不可能,您应该首先在数据库中正确标记该记录。这样,将来我们在进一步的数据处理中就可以更容易地决定是否使用这样的记录。正因为如此,如果我们想按省进行统计调查,我们就可以简单地忽略这些相互矛盾的、“不确定”的记录,以免在计算中引入错误。
有时,包含公司编号的记录数据库的数据清洗还包括一项涉及冲突检测的活动,旨在检查信息的有效性:即检测与其他国家商业登记册的数据冲突(验证给定的数据是否存在冲突)。公司在国家法院登记册上具有活跃的业务地位)。然后,对登记册中已删除或暂停的公司进行适当标记,以便我们稍后决定是否要将它们从数据库中删除。
数据清洗多久开展一次
我们的客户和潜在客户的业务数据库的数据清洗不是我们可以置之不理的话题。任何一个好的管理者都不应该预先假设各部门的员工在输入新数据时从未犯过也不会犯错误,或者每个人都会遵守统一的记录标准。错误是人为的事情,因此企业中必须进行数据清理。要么应该由经过适当培训的员工。了解数据处理细节的数据分析师/程序员来执行,要么我们应该将此任务外包给专门从事该主题的外部公司,最好是拥有 ISO / IEC 27001 的公司信息安全证书。
公司应该多久进行一次数据清洗呢?这取决于底座的大小。拥有大量记录的大中型企业应每3-6个月重复一次数据清理。对于较小的公司来说,每年进行一次数据清理就足够了。