ETL工程师必知的数据清洗方法【最全】

简介: ETL工程师必知的数据清洗方法【最全】

这是我的第19篇原创


网上很多ETL工程师很焦虑,不知道之后的职业道路怎么规划。其实我们需要先内圣,而后外王。ETL的工作很枯燥,但是一样可以总结出非常多的内容。ETL工程师往技术方向可以走数仓、数据架构师路线;往算法方向可以走数据挖掘、AI的路线;往业务方向可以走商业数据分析的路线。


回到正题,数据清洗是ETL工程师的核心工作之一,我们以终为始,剖析一下数据清洗这件事。

好,干货开始。数据清洗的目的可以从两个角度上看一是为了解决数据质量问题,二是让数据更适合做挖掘。不同的目的下分不同的情况,也都有相应的解决方式和方法。

解决数据质量问题


这部分主要是规范数据,满足业务的使用,解决数据质量的各种问题,其目的包括但不限于:

  1. 数据的完整性----例如人的属性中缺少性别、籍贯、年龄等
  2. 数据的唯一性----例如不同来源的数据出现重复的情况
  3. 数据的权威性----例如同一个指标出现多个来源的数据,且数值不一样
  4. 数据的合法性----例如获取的数据与常识不符,年龄大于150岁
  5. 数据的一致性----例如不同来源的不同指标,实际内涵是一样的,或是同一指标内涵不一致


数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。

那么为了解决以上的各种问题,我们需要不同的手段和方法来一一处理。

每种问题都有各种情况,每种情况适用不同的处理方法,具体如下:

  • 1:解决数据的完整性问题:
解题思路:数据缺失,那么补上就好了。补数据有什么方法?
  • 通过其他信息补全,例如使用身份证件号码推算性别、籍贯、出生日期、年龄等
  • 通过前后数据补全,例如时间序列缺数据了,可以使用前后的均值,缺的多了,可以使用平滑等处理,记得Matlab还是什么工具可以自动补全
  • 实在补不全的,虽然很可惜,但也必须要剔除。但是不要删掉,没准以后可以用得上
  • 2:解决数据的唯一性问题
解题思路:去除重复记录,只保留一条。去重的方法有:
  • 按主键去重,用sql或者excel“去除重复记录”即可,
  • 按规则去重,编写一系列的规则,对重复情况复杂的数据进行去重。例如不同渠道来的客户数据,可以通过相同的关键信息进行匹配,合并去重。
  • 3:解决数据的权威性问题
解题思路:用最权威的那个渠道的数据方法:对不同渠道设定权威级别,例如:在家里,首先得相信媳妇说的。。。
  • 4:解决数据的合法性问题
解题思路:设定判定规则
  1. 设定强制合法规则,凡是不在此规则范围内的,强制设为最大值,或者判为无效,剔除
  • 字段类型合法规则:日期字段格式为“2010-10-10”
  • 字段内容合法规则:性别 in (男、女、未知);出生日期<=今天
  1. 设定警告规则,凡是不在此规则范围内的,进行警告,然后人工处理
  • 警告规则:年龄》110
  1. 离群值人工特殊处理,使用分箱、聚类、回归、等方式发现离群值
  • 5:解决数据的一致性问题
解题思路:建立元数据体系,包含但不限于:
  1. 指标体系(度量)
  2. 维度(分组、统计口径)
  3. 单位
  4. 频度
  5. 数据


tips:

如果数据质量问题比较严重,建议跟技术团队好好聊聊。

如果需要控制的范围越来越大,这就不是ETL工程师的工作了,得升级为数据治理了,下次有空再分享。

供应算法原料

  1. 这部分主要是让数据更适合数据挖掘,作为算法训练的原料。其目标包括但不限于:
  1. 高维度----不适合挖掘
  2. 维度太低----不适合挖掘
  3. 无关信息----减少存储
  4. 字段冗余----一个字段是其他字段计算出来的,会造成相关系数为1或者主成因分析异常)
  5. 多指标数值、单位不同----如GDP与城镇居民人均收入数值相差过大
  • 1:解决高维度问题
解题思路:降维,方法包括但不限于:
  1. 主成分分析
  2. 随机森林
  • 2:解决维度低或缺少维度问题
解题思路:抽象,方法包括但不限于:
  1. 各种汇总,平均、加总、最大、最小等
  2. 各种离散化,聚类、自定义分组等
  • 3:解决无关信息和字段冗余
解决方法:剔除字段
  • 4:解决多指标数值、单位不同问题
解决方法:归一化,方法包括但不限于:
  1. 最小-最大
  2. 零-均值
  3. 小数定标

其实ETL工程师有非常好的数据功底,无论是转那个岗都方便,你缺少的是系统的学习和迈出去的勇气。

相关文章
|
Web App开发 前端开发 JavaScript
看看人家 阿里的 低代码引擎,多优雅!
特性 引擎协议 使用示例 工程化配置: cdn 可选方式:
|
Java Maven
如何在IDEA上创建一个Maven项目2022版
如何在IDEA上创建一个Maven项目2022版
454 0
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
1378 0
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
3272 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
SQL 分布式计算 关系型数据库
Sqoop入门(一篇就够了)
Sqoop入门(一篇就够了)
8983 3
Sqoop入门(一篇就够了)
|
人工智能 自然语言处理 数据挖掘
国内如何使用微软 Copilot ?新手进阶篇!
微软 Copilot 是一款功能强大的 AI 助手,掌握一些使用技巧,可以让它成为你工作和生活中的得力助手,助你提升效率,激发创造力,开启更加精彩的人生!
|
存储 NoSQL 分布式数据库
【HBase入门与实战】一文搞懂HBase!
该文档介绍了HBase,一种高吞吐量的NoSQL数据库,适合处理大规模数据。HBase具备快速读写、列式存储和天然支持集群部署的特点,常用于高并发场景。NoSQL与关系型数据库的主要区别在于数据模型、查询语言和可伸缩性。HBase的物理架构包括Client、Zookeeper、HMaster和RegionServer,其中RegionServer管理数据存储。HBase的读写流程利用MemStore和Bloom Filter提高效率。此外,文档还提到了HBase的应用,如时间序列数据、消息传递和内容服务。
3970 2
【HBase入门与实战】一文搞懂HBase!
|
SQL 数据采集 关系型数据库
在 MySQL 中使用 CTE
【8月更文挑战第11天】
1544 0
在 MySQL 中使用 CTE
|
数据采集 存储 SQL
ETL基础知识,看完这一篇应该够了!
ETL基础知识,看完这一篇应该够了!
2940 1
|
数据采集 人工智能 监控
【最佳实践】实时计算Flink在广告行业的实时数仓建设实践
通过每个广告位上不同广告的投放地区、广告ID、设备唯一编码等信息,可以统计点击次数、投放次数等指标,可用于制定更高效的广告投放策略,降低投放成本,提高广告收益。