缺失值是指数据集中某个或某些属性的值是不完整的,产生的原因主要有人为原因和机械原因两种,其中机械原因是由于机器故障造成数据未能收集或存储失败,人为原因是由主观失误或有意隐瞒造成的数据缺失。
制定合理的缺失值数据处理策略,不仅可以提升缺失值数据处理的效率,还可以使处理后数据的可靠性得到保证,提高最终分析结果的准确性。缺失值的处理方法很多,这里建议大家在清洗缺失值时,首先计算数据源字段缺失值比例,之后根据数据缺失率和重要性,指定不同的策略。下面,通过一张图来描述缺失数据的缺失率以及重要性划分的四种情况,具体如图所示。
对于重要性高、缺失率高的数据,尝试从其它渠道获取数据进行补全,或者通过对其它字段的数据进行分析、计算等方式获取合理值进行补全,再或者去除字段但要在结果中进行标注。对于重要性高、缺失率低的数据,可以通过对字段自身的数据进行分析、计算等方式获取合理值进行补全,还可以通过自身的经验与业务知识对缺失值数据进行人为补全。对于重要性低、缺失率高的数据,则直接去除该字段。对于重要性低、缺失率低的数据,可以不去处理或者进行简单的填充。
数据缺失分为两种:一种是行记录的缺失,这种情况又称数据记录丢失;另一种是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺。去除缺失值数据通常分为两种情况:一种是删除存在遗漏信息属性值的对象的列,另一种是删除存在遗漏信息属性值对象的记录,从而得到一个完备的信息表。缺失值数据在缺失值所在的列对最终分析结果无重要意义或存在缺失值的记录与初始数据集的数据量相比非常小的情况下非常有效。在数据量小的情况下,通过人为观察就可以轻易从数据集中找到存在缺失值的记录;若是数据量比较大,那么通过人为观察的方式查找存在缺失值的记录是非常耗时的,因此数据集较大的情况下可利用统计学方法筛选出包含缺失值的对象,然后通过计算得出每个字段的缺失率,去除缺失率高的字段,最后再对数据进行过滤,将有缺失值的记录过滤掉,这样就可以避免数据大量的丢失。
通过Kettle工具,去除原始数据集revenue.txt中的缺失值。
数据准备:
现在有一份就业人员的收入数据文件revenue.txt,由于某种原因,在数据采集的过程中产生了大量的缺失值数据,内容如图所示:
1.打开Kettle工具,创建转换
通过使用Kettle工具,创建一个转换delete_missing_value,并添加“文本文件输入”控件、“字段选择”控件、“过滤记录”控件、“Excel输出”控件、“空操作(什么也不做)”控件以及Hop跳连接线。
2.配置文本文件输入控件
单击【预览记录】按钮,查看文件revenue.txt中的数据是否成功抽取到文本文件输入流中,具体如图所示。
3.配置字段选择控件
4.配置过滤记录控件
在“条件”处设置过滤的条件,过滤掉有缺失值的数据字段(这里是过滤Name、Pay和Area字段中的缺失值);单击左边“<field>”框,弹出字段对话框,选择要过滤的字段Name;单击 “=”框,弹出函数对话框,选择过滤条件(这里选择IS NULL)。
单击符号“+”增加过滤条件;单击“AND”,弹出操作符对话框,选择操作符(这里选择的是OR)。
5.配置Excel输出控件
6.运行转换
7.查看文件file.xls
结果发现缺失值已经被过滤。