ETL工程师必知的数据清洗方法【最全】
这是我的第19篇原创
网上很多ETL工程师很焦虑,不知道之后的职业道路怎么规划。其实我们需要先内圣,而后外王。ETL的工作很枯燥,但是一样可以总结出非常多的内容。ETL工程师往技术方向可以走数仓、数据架构师路线;往算法方向可以走数据挖掘、AI的路线;往业务方向可以走商业数据分析的路线。
回到正题,数据清洗是ETL工程师的核心工作之一,我们以终为始,剖析一下数据清洗这件事。
好,干货开始。数据清洗的目的可以从两个角度上看一是为了解决数据质量问题,二是让数据更适合做挖掘。不同的目的下分不同的情况,也都有相应的解决方式和方法。
解决数据质量问题
这部分主要是规范数据,满足业务的使用,解决数据质量的各种问题,其目的包括但不限于:
数据的完整性----例如人的属性中缺少性别、籍贯、年龄等
数据的唯一性----例如不同来源的数据出现重复的情况
数据的权威性----例如同一个指标出现多个来源的数据,且数值不一样
数据的合法性----例如获取的数据与常识不符,年龄大于150岁
数据的一致性----例如不同来源的不同指标,实际内涵是一样的,或是同一指标内涵不一致
数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。
那么为了解决以上的各种问题,我们需要不同的手段和方法来一一处理。
每种问题都有各种情况,每种情况适用不同的处理方法,具体如下:
1:解决数据的完整性问题:
解题思路:数据缺失,那么补上就好了。
补数据有什么方法?
通过其他信息补全,例如使用身份证件号码推算性别、籍贯、出生日期、年龄等
通过前后数据补全,例如时间序列缺数据了,可以使用前后的均值,缺的多了,可以使用平滑等处理,记得Matlab还是什么工具可以自动补全
实在补不全的,虽然很可惜,但也必须要剔除。但是不要删掉,没准以后可以用得上
2:解决数据的唯一性问题
解题思路:去除重复记录,只保留一条。
去重的方法有:
按主键去重,用sql或者excel“去除重复记录”即可,
按规则去重,编写一系列的规则,对重复情况复杂的数据进行去重。例如不同渠道来的客户数据,可以通过相同的关键信息进行匹配,合并去重。
3:解决数据的权威性问题
解题思路:用最权威的那个渠道的数据
方法:
对不同渠道设定权威级别,例如:在家里,首先得相信媳妇说的。。。
4:解决数据的合法性问题
解题思路:设定判定规则
设定强制合法规则,凡是不在此规则范围内的,强制设为最大值,或者判为无效,剔除
字段类型合法规则:日期字段格式为“2010-10-10”
字段内容合法规则:性别 in (男、女、未知);出生日期<=今天
设定警告规则,凡是不在此规则范围内的,进行警告,然后人工处理
警告规则:年龄》110
离群值人工特殊处理,使用分箱、聚类、回归、等方式发现离群值
5:解决数据的一致性问题
解题思路:建立元数据体系,包含但不限于:
指标体系(度量)
维度(分组、统计口径)
单位
频度
数据
tips:
如果数据质量问题比较严重,建议跟技术团队好好聊聊。
如果需要控制的范围越来越大,这就不是ETL工程师的工作了,得升级为数据治理了,下次有空再分享。
供应算法原料
这部分主要是让数据更适合数据挖掘,作为算法训练的原料。其目标包括但不限于:
高维度----不适合挖掘
维度太低----不适合挖掘
无关信息----减少存储
字段冗余----一个字段是其他字段计算出来的,会造成相关系数为1或者主成因分析异常)
多指标数值、单位不同----如GDP与城镇居民人均收入数值相差过大
1:解决高维度问题
解题思路:降维,方法包括但不限于:
主成分分析
随机森林
2:解决维度低或缺少维度问题
解题思路:抽象,方法包括但不限于:
各种汇总,平均、加总、最大、最小等
各种离散化,聚类、自定义分组等
3:解决无关信息和字段冗余
解决方法:剔除字段
4:解决多指标数值、单位不同问题
解决方法:归一化,方法包括但不限于:
最小-最大
零-均值
小数定标
其实ETL工程师有非常好的数据功底,无论是转那个岗都方便,你缺少的是系统的学习和迈出去的勇气。
听说转发文章
会给你带来好运
ETL工程师必知的数据清洗方法【最全】相关推荐
- Python开发工程师必知十大机器学习库
Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,再加上其简单.易学.速度快.开源免费.可移植性.可扩展性以及面向对象的特点,Python成为2017年最受欢迎的最受欢迎的编程 ...
- 电子工程师必知必会——矢网史密斯Smith Chart圆图测试阻抗
史密斯圆图是由很多圆周交织在一起的一个图.正确的使用它,可以在不作任何计算的前提下得到一个表面上看非常复杂的系统的匹配阻抗,唯一需要作的就是沿着圆周线读取并跟踪数据. 本期视频贝贝就带大家学习矢网的史 ...
- 个推技术 | ETL工程师必看!超实用的任务优化与断点执行方案
前言 随着大数据时代的快速发展,企业每天需要存储.计算.分析数以万亿的数据,同时还要确保分析的数据具备及时性.准确性和完整性.面对如此庞大的数据体系,ETL工程师(数据分析师)如何能高效.准确地进行计 ...
- 在知乎上看到的一个关于Linux运维工程师必知的几点,希望对有志于从事运维工作的你有帮助
作者:Shanker Lee 链接:https://www.zhihu.com/question/19855127/answer/13816874 来源:知乎 著作权归作者所有.商业转载请联系作者获得 ...
- 算法工程师必知必会10大基础算法!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Cricode 博客园 来源:博客园 链接:http://kb. ...
- 工程师必知的代码重构指南
作者 | CATE LAWRENCE 译者 | 冬雨 策划 | 蔡芳芳 本指南将带你了解进行代码重构的好处.可能遇到的挑战.可以采用的工具和最佳实践,以及重构和技术债务之间的区别. 我们都在寻找清理代 ...
- c语言goto语句用法_硬件工程师必知的10个C语言技巧
硬件设计师最常见的工作内容是通过写代码来测试硬件.这10个C语言技巧(C语言仍然是常见的选择)可以帮助设计师避免因基础性错误而导致某些缺陷的产生并造成维护方面的困扰. 为了成功的推出一个产品,软件开发 ...
- 20种硬件工程师必知必会基础元器件|最新更新至8.13
** 如有错误,感谢指正** 如有错误,感谢指正,请私信博主,有辛苦红包,拜"一字之师". 请根据目录寻找自己需要的段落 本章知识为硬件工程师基础课程之基本元器件 首先我们需要知道 ...
- 干货 | 软件工程师必知之事 —— 如何定义自己的职业路线?
有关软件工程师职业发展的文章并不少,甚至可以说是泛滥.很多人都能在这个话题上说两句,三五年工作经验的编程老鸟.架构师.技术VP.CTO,都有各自的看法与实践经验.没有哪一套方法是适用于所有人的,这一套 ...
最新文章
- VoIP败家子的游戏
- Azure CosmosDB (3) 选择适当的一致性级别
- python网站开发实例-【9】Python接口开发:flask Demo实例
- 通过帧中继验证OSPF支持的不同网络类型
- CTFshow php特性 web134
- PHP开发一个简单的成绩录入系统
- 安卓手机运行git和python操作指南-有手机就能写代码了
- jQuery EasyUI dialog 居中最简单的办法
- mysql 定时脚本_MySQL定时执行脚本(计划任务)命令实例
- linux mysql主从配置_linux下mysql主从配置
- C++11中线程所有权转移分析
- 3 SAP STMS跨服务器传请求号
- mysql内存片多大_内存带宽对mysql影响多大?
- Vue.js之初印象
- LeetCode 5376. 非递增顺序的最小子序列
- Bailian2976 Bailian1936 All in All【字符串匹配】
- linux 授信_Linux 配置双机SSH信任
- 有关css3的一些问题
- 实验七 构件图和部署图
- html 视频在线播放,HTML 视频(Video)播放