使用Go清理数据:第2部分

总览

这是使用Go清理数据的系列文章的第二部分,其中第二部分。 在第一部分中,我们介绍了Go的基本文本功能以及如何处理CSV文件。 在本教程中,我们将深入研究实际的数据清理。

我们将首先了解混乱数据的问题并提出一个策略,然后研究验证单个字段,在可能的情况下修复数据,并决定如何处理丢失的值。

数据清理策略

清理数据的策略应规定遇到无效,混乱,部分或丢失的数据时应采取的措施。 它还应确定有关清除过程的报告级别。

我们在此关注的数据是表格数据,其中每一行都是独立的。 在不同的数据行之间没有嵌套的层次结构或连接。 许多现实世界的数据集都具有这个不错的属性。

去掉

处理无效数据的最简单方法是将其删除。 如果缺少任何字段或包含无效数据,则删除整行。 这很容易,有时是正确的做法。 如果有问题的字段很关键,并且您无法恢复它,那么您只能删除整个记录。

固定

最好的解决方案是修复不良领域。 在某些情况下,很容易发现并修复问题。 在UFO目击数据集中,州字段可以是美国的52个州之一。

如果该值必须全部为大写,并且某些行包含小写字母,则可以将它们设为大写。

报告

报告无效行(已删除或已修复)非常重要。 组织可以决定让人们尝试修复丢失的数据。 可能需要通过质量检查来运行固定数据,以确保自动修复不会引入无效数据。

统计资料

需要收集有关清理过程的统计信息,以评估源数据的质量,有时还需要确定清理后的数据是否值得处理。 统计信息可以包括丢弃和固定的行数以及每列的错误和缺失字段数。

现场清理

到目前为止,我已经描述了一种用于数据清理的预处理方法。 但是,可以在处理期间执行清理。 每行都将在处理之前进行检查。 如果没有必要进行预处理,这是有用的,因为没有人可以提前修复不良数据以进行后续分析,或者处理过程对时间敏感。

在这种情况下,清理的主要目的是确保不良数据行不会破坏整个处理管道,并且可以根据需要跳过或修复。

验证字段

您如何验证字段? 您需要确切地知道应该存在什么类型的数据,有时还要知道什么值。 这里有一些例子。

验证数字字段

数值字段在数据集中非常常见。 除了数字的类型(整数,实数,复数)之外,某些字段更加专业。 例如,价格字段可能恰好要求两个小数点并且为正。 这是一个检查字符串是否表示价格的函数:

func validate_price(s string) bool {
    parts := strings.Split(s,".")
	if len(parts) != 2 {
		return false
	}

	dollars, err := strconv.Atoi(parts[0])
	if err != nil {
		return false
	}
	
	if dollars < 0 {
		return false
	}
	
	cents, err := strconv.Atoi(parts[1])
	if err != nil {
		return false
	}
	
	if cents < 0  || cents > 99 {
		return false
	}

	return true
}

验证URL字段

有时,您需要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值