在进行玩特征理解后,我们大致理解了面对的数据中包含哪些内容。下一阶段,我么需要对数据中的内容进行进一步分析处理,针对不同数据进行清洗。数据清洗是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性
将时间和日期格式进行统一化后再进行统一处理
根据实际需要将,不同保存格式的数据统一化,例如将一个特征下的所有数据全部统一为浮点数(float)类型。
将不应该有的字符进行筛选与剔除,避免后续处理的问题
由于人为填写错误等问题,造成填写错误或者是前端数据读取时没有校验,导致导入数据时部分没有对其或者全部没有对其。需要将其进行识别并处理。
由于人为定义错误、转存、加载等原因,数据类型经常会出现数据类型不符的情况。例如:金额特征是字符串类型,实际上应该转换成int/float型。
对于每个特征值都完全相同的重复数据,应该删除重复值,只保留一条。
pd.drop_duplicates()
对于数据不完全相同,但是作用完全相同的数据,也应该按需进行删除
pd.drop_duplicates(subset=['XX'], keep='last')
根据具体常识,可以明显判断出来该特征的部分数据不合理的,应该进行修改删除。例如:age:200, 月份:14
有些字段是可以互相验证的,举例:身份证号是1101031980XXXXXXXX,然后年龄填18岁。在这种时候,需要根据字段的数据来源,来判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段。
在数据分布中,处于特定分布区域或范围之外的数据通常被定义为异常或者噪声。
异常通常分为两种:
过分析统计数据的散度情况,即数据变异指标,来对数据的总体特征有更进一步的了解,对数据的分布情况有所了解,进而通过数据变异指标来发现数据中的异常点数据。
常用的数据变异指标有极差、四分位数间距、均差、标准差、变异系数等等,变异指标的值大表示变异大、散布广;值小表示离差小,较密集。
若数据存在正态分布,在3σ原则下,异常值为一组测定值中与平均值的偏差超过3倍标准差的值。如果数据服从正态分布,距离平均值3σ之外的值出现的概率为 P ( ∣ x ? μ ∣ > 3 σ ) < = 0.003 P(|x - μ| > 3σ) <= 0.003 P(∣x?μ∣>3σ)<=0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。
箱线图提供了识别异常值的一个标准:如果一个值小于QL-1.5IQR或大于OU+1.5IQR的值,则被称为异常值。
箱型图判断异常值的方法以四分位数和四分位距为基础,四分位数具有鲁棒性:25%的数据可以变得任意远并且不会干扰四分位数,所以异常值不能对这个标准施加影响。因此箱型图识别异常值比较客观,在识别异常值时有一定的优越性。
首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显著属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象。
基于距离的方法是基于下面这个假设:即若一个数据对象和大多数点距离都很远,那这个对象就是异常。通过定义对象之间的临近性度量,根据距离判断异常对象是否远离其他对象,主要使用的距离度量方法有绝对距离(曼哈顿距离)、欧氏距离和马氏距离等方法。
考察当前点周围密度,可以发现局部异常点,离群点的局部密度显著低于大部分近邻点,适用于非均匀的数据集。
检测出异常值后,对异常值进行处理。
分箱方法通过考察数据的近邻来光滑数据的值,有序值分布到不同的"桶"或者箱中,得到局部光滑的结果。
分箱方法:
可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,是的一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。
对异常值处理,需要具体情况具体分析,异常值处理的方法常用有四种:
参考文章:
原文链接:https://blog.csdn.net/zhaodedong/article/details/98001930