第五章案例 2016290139 程硕鹏

本文详细介绍了如何使用Kettle工具进行数据清洗,包括完全去重、不完全去重的操作步骤,以及处理缺失值(去除和填充)和异常值(删除和修补)的方法。通过实例展示了数据一致性处理和数据规范化处理的过程,为数据预处理提供了实用的技巧和方法。
摘要由CSDN通过智能技术生成

5.1.1完全去重

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

通过使用Kettle工具,创建一个转换repeat_transform,并添加“CSV文件输入”控件、“唯一行(哈希值)”控件以及Hop跳连接线,具体如图所示。

2)配置控件

 双击“CSV文件输入”控件,进入“CSV文件输入”配置界面,具体如图所示

 双击“唯一行(哈希值)”控件,进入“唯一行(哈希值)”配置界面。

 3)查看结果

5.1.2不完全去重

1)通过使用Kettle工具,创建一个转换part_repeat_transform,并添加“文本文件输入”控件、“唯一行(哈希值)”控件以及Hop跳连接线,具体如图所示。

 2)配置控件

单击“内容”选项卡;清除分隔符处的默认分隔符“;”,并单击【Insert TAB】按钮,在分隔符处插入一个制表符;取消勾选“头部”复选框

单击“字段”选项卡;根据文件people.txt的内容添加对应的字段名称,并指定数据类型。

 

 单击【预览记录】按钮,查看文件people.txt的数据是否成功抽取到文本文件输入流中。

 双击“唯一行(哈希值)”控件,进入“唯一行(哈希值)”配置界面。

 3)运行程序

 4)查看结果

 

5.2.1去除缺失值

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

        通过使用Kettle工具,创建一个转换delete_missing_value,并添加“文本文件输入”控件、“字段选择”控件、“过滤记录”控件、“Excel输出”控件、“空操作(什么也不做)”控件以及Hop跳连接线。

 2) 配置控件

双击“文本文件输入”控件,进入“文本文件输入”配置界面。

单击“字段”选项卡;根据文件revenue.txt的内容添加对应的字段名称,并指定数据类型。

 单击【预览记录】按钮,查看文件revenue.txt中的数据是否成功抽取到文本文件输入流中,具体如图所示。

 

 配置字段选择控件在“选择和修改”选项卡的“字段”处手动添加文本文件输入控件输出的所有数据字段,也可以单击【获取选择的字段】按钮,Kettle工具自动检索并添加文本文件输入控件输出的所有数据字段。

 双击“过滤记录”控件,进入“过滤记录”界面。在“条件”处设置过滤的条件,过滤掉有缺失值的数据字段(这里是过滤Name、Pay和Area字段中的缺失值);单击左边“<field>”框,弹出字段对话框,选择要过滤的字段Name;单击 “=”框,弹出函数对话框,选择过滤条件(这里选择IS NULL)。

 双击“Excel输出”控件,进入“Excel输出”配置界面。

 3)运行程序

 4)查看结果

 

5.2.2填充缺失值

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

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

 2)配置控件

双击“文本文件输入”控件,进入“文本文件输入”配置界面。

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

 单击“字段”选项卡;根据文件people_survey.txt文件的内容添加对应的字段名称,并指定数据类型

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

        在“条件”处设置过滤的条件,由于从“预览数据”图中可以看出字段userid为000016用户的hours_per_week(即每周工作时间字段)存在缺失值,而它的workclass字段值为Private,因此我们可以将过滤字段设置为workclass、过滤值设置为Private作为过滤条件。

 勾选“选择字段”处的复选框,并在“字段”框添加字段为hours_per_week,值替换为44(44是字段为hours_per_week中所有值相加求的均值,这里指用44替换字段hours_per_week中的NULL值)。

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

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

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

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

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

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

 3)运行程序

4)查看运行结果

 

5.3.1删除包含异常值的记录

        通过使用Kettle工具,创建一个转换delete_anomalous _value,并添加“文本文件输入”控件、“过滤记录”控件、“空操作(什么也不做)”控件以及Hop跳连接线。

        通过使用Kettle工具,创建一个转换delete_anomalous _value,并添加“文本文件输入”控件、“过滤记录”控件、“空操作(什么也不做)”控件以及Hop跳连接线。

 单击“字段”选项卡;根据文件temperature.txt的内容添加对应的字段名称,并指定数据类型。单击【预览记录】按钮,查看文件temperature.txt的数据是否成功抽取到文本文件输入流中。

 

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

在“条件”处设置过滤的条件,由于文件temperature.txt中time为6:30的温度是137摄氏度,不在非异常值的范围内,因此属于异常值,我们应该将过滤字段设置为temperature、过滤值为137。

在“发送true数据给步骤:”处的下拉框中选择“空操作(什么也不做)2”,将异常值放在“空操作(什么也不做)2”控件中;在“发送false数据给步骤:”处的下拉框中选择“空操作(什么也不做)”,将非异常值放在“空操作(什么也不做)”控件中。

 3)运行程序

4) 查看结果

 

5.3.2修补异常值

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

        通过使用Kettle工具,创建一个转换fill_unusual_value,并添加“表输入”控件、“过滤记录”控件、“空操作(什么也不做)”控件、“设置值为NULL”控件、“合并记录”控件、“替换NULL值”控件、字段选择控件以及Hop跳连接线。

 2)配置控件

双击“表输入”控件,进入“表输入”配置界面

在SQL框中编写查询数据表interpolation_data的SQL语句,然后单击【预览】按钮,查看数据表interpolation_data的数据是否成功从MySQL数据库中抽取到表输入流中。

         在“条件”处设置过滤的条件,即设置Height字段的取值范围([114-226]),从而判断数据表中的每个数据是否为异常值。若是在非异常值的取值范围内,则是非异常值,否则是异常值。

        在“发送true数据给步骤:”处的下拉框中选择“空操作(什么也不做)2”,将非异常值放在“空操作(什么也不做)2”控件中;在“发送false数据给步骤:”处的下拉框中选择“空操作(什么也不做)”,将异常值放在“空操作(什么也不做)”控件中。

 

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

在“旧数据源:”处的下拉框选择“设置为NULL值”,“新数据源:”处的下拉框选择“空操作(什么也不做)2”;在“匹配的关键字:”处,添加关键字段,即id。

 

 勾选“选择字段”处的复选框,并在“字段”框添加字段为Hight,值替换为170(通过计算得到499人的平均身高值近似为170,因此用170替换字段Hight中的NULL值)

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

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

 3)运行程序

 4)查看结果

 

5.4.1数据一致性处理(1)

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

        使用Kettle工具,创建一个转换data _consistency,并添加“表输入”控件、“值映射”控件、“插入/更新”控件以及Hop跳连接线。

 2)配置控件

        在SQL框中编写查询数据表interpolation_data的SQL语句,然后单击【预览】按钮,查看数据表Personnel_Information的数据是否成功从MySQL数据库中抽取到表输入流中

 双击“值映射”控件,进入“值映射”配置界面;在“使用的字段名”处的下拉框选择字段GENDER;在“字段值”框中,添加源值和目标值,这里是将Male替换成数字0,将Female替换成数字1。

 双击“插入/更新”控件,进入“插入/更新”界面;单击【新建】按钮,配置数据库连接,配置完成后单击【确认】按钮。

单击目标表右侧的【浏览】按钮,选择目标表Personnel_ Information_New。单击【获取字段】按钮,用来指定查询数据所需要的关键字,这里选择的是Personnel_ Information_New数据表中的USERID字段和输入流里面的USERID字段;单击【获取和更新字段】按钮,用来指定需要更新的字段。

 3)运行程序

 4)查看结果

 

5.4.2数据一致性处理(2)

1)打开Kettle工具,创建作业

通过使用Kettle工具,创建一个作业data _consistency_job,并添加“Start”控件、“转换”控件以及作业跳连接线。

2)配置控件

双击“Start”控件,进入“作业定时调度”界面;勾选“重复”处的复选框;单击“类型”处的下拉框,选择“时间间隔”定时,并设置以秒计算的间隔是5,以分钟计算的间隔是0。

 

 双击“转换”控件,进入“转换”界面;单击【浏览】按钮,选择添加转换data _consistency至作业中。

 3)运行程序

 5.4.3数据规范化处理

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

使用Kettle工具,创建一个转换data_validation,并添加“自定义常量数据”控件、“计算器”控件、“数据检验”控件、“空操作”控件以及Hop跳连接线。

 2)配置控件

双击“自定义常量数据”控件,进入“自定义常量数据”界面配置实验用数据;单击“元数据”选项卡,添加字段常量ProductionDate、ProductionName、ProductionNumber以及CommoditySales并指定其数据类型;单击“数据”选项卡,添加自定义的数据。

 双击“计算器”控件,进入“计算器”界面;在“字段”处,添加一个新字段UnitPrice,用于存储计算出的产品单价数据;在“字段A”和“字段B”处的下拉选项中分别选择“CommoditySales”(销售额)和“ProductionNumber”(销售数量)字段;在“计算”处的下拉框中选择“A/B”,即表示将字段A与字段B进行相除计算。

双击“数据检验”控件,进入“数据检验”界面;单击【增加检验】按钮,增加检验条件,这里我们制定的检验条件有三个,即日期(ProductionDate)不能在2019年1月1日之前、产品名称(ProductionNumber)必须都是小写以及单个产品价格(UnitPrice)不能超过10这三个检验条件;单击【增加检验】按钮,弹出“输入检验的名称”窗口,在该窗口中添加检验名称date_verify用于校验如期,添加后单击【确定】按钮关闭“输入检验的名称”窗口。

单击选中“数据检验”控件,然后按住Shift键,通过分发方式设置“主输出步骤”连接到“空操作(什么也不做)”控件;设置“错误处理步骤”连接到“空操作(什么也不做)2”控件。

 

 

 3)运行程序

 4)查看结果

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值