5.2.3Kettle数据的清洗与检验——填充缺失值

1、打开Kettle工具,创建转换

使用Kettle工具创建转换fill_missing_value, 并添加“文本文件输人”控件、“过滤记录”控件。“空操作(什么也不做)”控件、“替换NULL值"控件、“合并记录”控件、“字段选择"控并以及Hop跳连接线。

 

2、配置“文本文件输入"控件

双击“文本文件输人”控件,进入“文本文件输人”界面,单击“浏览"按钮,选择要填充缺失值的文件people_survey.txt

单击“增加”按钮,将要填充缺失值的文件people_ survey. txt添加到“文本文件输人”控件中

单击“内容"选项卡,切换到“内容”选项卡界面

清除分隔符处的默认分隔符“;”,单击Insert TAB按钮,在分隔符处插人一个制表符:取消勾选“头部”复选框,若不取消,则在进行数据抽取操作时会排除文件第一行的数据

单击“字段”选项卡,切换到“字段”选项卡界面

根据文件people_survey.txt的内容添加对应的字段名称,并指定数据类型。需要注意的是,制表符可看作是由多个空格组成,因此在“去除空字符串方式”列时,所添加的字段都应选择“不去掉空格”,否则在抽取数据操作时会把制表符当作空格去除,而不能把制表符作为分隔符实现文本文件内容的分隔

单击“预览记录”按钮,查看文件people_ survey. txt的数据是否成功抽取到文本文件输人流中  

文件people_ survey. txt的数据已经成功抽取到文本文件输人流中,单击“关闭”一“确定”按钮,完成“文本文件输人”控件的配置

3、配置“过滤记录”控件
将字段workclass同为Private 值的字段hours_per_week 值相加求均值,并用该均值对字段userid中值为000016的hours_per_week字段存在的缺失值进行填充

双击“过滤记录”控件,进入“过滤记录”界面

在“条件”处设置过滤的条件,由于字段userid 为00016用户的hours.per_week(即每周工作时间字段)存在缺失值,而它的workclass字段值为Private,因此可以将过滤字段设置为workclass 、过滤值设置为Private 作为过滤条件

“发送true 数据给步骤:”下拉列表中选择“空操作(什么也不做)”,将workclass字段值为Private的数据放在“空操作”控件中;在“发送false 数据给步骤: "后的下拉列表中选择“空操作(什么也不做)2”,将workclass字段值不为Private 的数据放在“空操作(什么也不做)2”控件中

单击“确定”按钮,完成“过滤记录”控件的配置 

4、配置“替换NULL值”控件
双击图中进入替换NULL值”控件,进入“替换NULL值”界面

勾选“选择字段”复选框,并在“字段”框添加字段hours_ per_ week,值 替换为44(44是字段为hours_ per week中所有值相加求的均值,这里指用44替换字段hours_per. week中的 NULL值)

单击“确定”按钮,完成“替换NULL值"控件的配置。

5、配置“合并记录"控件

双击“合并记录”控件,进入“合并行(比较)”界面

在“旧数据源:”后的下拉列表中选择替换NULL值”,在“新数据源: "E的下拉列表中选择“空操作(什么也不做)2”;在“匹配的关键字:”部分添加关键字段日userid

“合并记录”控件主要是将两个数据源(旧数据源、新数据源)进行合并,标志字段主要是将每条数据进行标记,新数据源的数据会标记为new,旧数据源的数据会标记为deleted,若新、旧数据源中存在相同的关键字段设置的数据,则两个数据源进行合并后,只会保存从新数据源中获取的数据获取的数据,并以identical进行标记

单击“确定”按钮,完成“合并记录”控件的配置

 6、配置“替换NULL值2”控件
双击“替换NULL值2”控件,进入“替换NULL值2”界面

勾选“选择字段"复选框,并在“字段”框添加字段为workclass, 值替换为Private(这里用Private替换字段workclass中的NULL值) 

7、配置“字段选择”控件

双击“字段选择”控件,进入“选择/改名值”界面

在“移除”选项卡界面中添加要移除的字段名称,这里移除的是字段flagfield

单击“确定”按钮,完成“字段选择”控件的配置

8、运行转换fill missing. value
单击转换工作区顶部的D按钮,运行创建的转换fll_ missing. value, 实现填充文件people_ survey. txt中的缺失值

从执行结果窗口的“步骤度量”选项卡可以看出,“文本文件输入”控件输入21条数据并写入该控件;“过滤记录”控件读取“文本文件输人’控件中的21条数据并写人访出件“空操作(什么也不做)”控件读取符合过滤要求的15条数据并写人该控件;“空操作(A 么也不做)2”控件读取不符合过滤要求的6条数据并写人该控件;“替换NULL值”控件液取“空操作”控件中的15条数据进行空值替换操作并写人该控件;“合并记录”控件读取“替换NULL值”控件和“空操作(什么也不做)2”控件共21条数据并写人该控件;“替换NULL 值2”控件读取“合并记录”中的21条数据进行空值替换操作并写人该控件;“字段选择"控件读取“替换NULL值2”控件中的21条数据并写入该控件。

单击“字段选择”控件,再单击执行结果窗口的Preview data选项卡,查看是否填充了文件people_survey.txt中的缺失值

 

文件people_survey.txt中不存在缺失数据值了,说明通过Kettle工具实现了缺失值的填充

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值