5.2.1去除缺失值
数据缺失分为两种:一种是行记录的缺失,这种情况又称数据记录丢失;另一种是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺。 去除缺失值数据通常分为两种情况:一种是删除存在遗漏信息属性值的对象的列,另一种是删除存在遗漏信息属性值对象的记录,从而得到一个完备的信息表。缺失值数据在缺失值所在的列对最终分析结果无重要意义或存在缺失值的记录与初始数据集的数据量相比非常小的情况下非常有效。 在数据量小的情况下,通过人为观察就可以轻易从数据集中找到存在缺失值的记录;若是数据量比较大,那么通过人为观察的方式查找存在缺失值的记录是非常耗时的,因此数据集较大的情况下可利用统计学方法筛选出包含缺失值的对象,然后通过计算得出每个字段的缺失率,去除缺失率高的字段,最后再对数据进行过滤,将有缺失值的记录过滤掉,这样就可以避免数据大量的丢失。
1.案例介绍
通过Kettle工具,去除原始数据集revenue.txt中的缺失值。
2.数据准备
现在有一份就业人员的收入数据文件revenue.txt,由于某种原因,在数据采集的过程中产生了大量的缺失值数据,内容如图所示。
3.具体步骤
(1)打开Kettle工具,创建转换
通过使用Kettle工具,创建一个转换,并添加“文本文件输入”控件、“字段选择”控件、“过滤记录”控件、“Excel输出”控件、“空操作(什么也不做)”控件以及Hop跳连接线。
(2) 配置文本文件输入控件
双击“文本文件输入”控件,进入“文本文件输入”配置界面。单击【浏览】按钮,选择要去除缺失值的文件revenue.txt;单击【增加】按钮,将要去除缺失值的文件revenue.txt添加到“文本文件输入”控件中。
单击“内容”选项卡;在清除分隔符处的默认分隔符“;”,单击【Insert TAB】按钮,在分隔符处插入一个制表符;取消勾选“头部”复选框,若不取消,在进行数据抽取操作时会排除文件第一行的数据。
单击“字段”选项卡;根据文件revenue.txt的内容添加对应的字段名称,并指定数据类型。
单击【预览记录】按钮,查看文件revenue.txt中的数据是否成功抽取到文本文件输入流中,具体如图所示。
选择控件
在“选择和修改”选项卡的“字段”处手动添加文本文件输入控件输出的所有数据字段,也可以单击【获取选择的字段】按钮,Kettle工具自动检索并添加文本文件输入控件输出的所有数据字段。
在“移除”选项卡处添加要移除的字段名称,这里移除的是Sex字段。
(4)配置过滤记录控件
在“条件”处设置过滤的条件,过滤掉有缺失值的数据字段(这里是过滤Name、Pay和Area字段中的缺失值);单击左边“<field>”框,弹出字段对话框,选择要过滤的字段Name。
单击 “=”框,弹出函数对话框,选择过滤条件(这里选择IS NULL)。
字段Name的过滤设置如图所示。
单击符号“+”增加过滤条件;单击“AND”,弹出操作符对话框,选择操作符(这里选择的是OR)。
单击“增加条件”图中的“null = [ ]”,添加过滤字段;单击左边“<field>”框,弹出字段对话框,选择要过滤的字段Pay;单击“=”框,弹出函数对话框,选择过滤条件(这里选择IS NULL)。字段Pay的过滤设置,如图所示。
单击“字段Pay的过滤设置”图中的符号“+”增加过滤条件;单击“AND”,弹出操作符对话框,选择操作符(这里选择OR)
单击“增加条件”图中的“null = [ ]”,添加过滤字段;单击左边“<field>”框,弹出字段对话框,选择要过滤的字段Area;单击“=”框,弹出函数对话框,选择过滤条件(这里选择IS NULL);字段Area的过滤设置,具体如图所示。
连续单击两次【确定】按钮,查看整体设置的过滤条件。
在“发送true数据给步骤:”处的下拉框中选择“空操作”,将包含缺失值的行数据放在空操作控件中;在“发送false数据给步骤:”处的下拉框中选择“Excel输出”,将没有缺失值的行数据输出到Excel文件中。
(5)配置Excel输出控件
双击“Excel输出”控件,进入“Excel输出”配置界面,单击【浏览】按钮,选择要输出的文件路径。
(6)运行转换
4.查看文件file.xls
查看“Excel输出”控件输出的文件file.xls是否还含有缺失值数据,文件file.xls的内容如图所示。