基于《python数据分析与数据运营》的总结与部分代码修正
缺失值的处理
整体思路:找到缺失值——分析缺失值在整体样本中分布占比及是否具有显著的无规律分布特征——后续使用的模型中是否能满足缺失值的自动处理——采用哪种处理方式
1.丢弃
缺失值超过总体的10%以及存在明显数据分布规律或特征的不宜丢弃
2.补全
统计法:对于数值型数据使用均值、加权均值、中位数等方法补全;对于分类数据使用类别众数最多的值补足
模型法:将缺失西段作为目标变量进行预测得到最为可能的补全值。带有缺失值的列是数值变量,采用回归模型补全;分类变量,采用分类模型补全。
专家补全
其他方法:随机法、特殊值法、多重填补等
3.真值转换法
无法采用上述方法,或认为数据缺失也是一种规律,不应该轻易对缺失值随意处理。
把数据缺失也视为数据分布规律的一部分
4.不处理
这种主要看后期的数据分析和建模应用,很多模型对于缺失值有容忍度或灵活的处理方法,因此在预处理阶段可以不作处理。
常见的能够自动处理缺失值的模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯、DBSCAN(基于密度的带有噪声的空间聚类)
KNN:忽略,缺失值不参与距离计算
决策树及其变体:将缺失值作为分布的一种状态并参与到建模过程
DBSCAN:不基于距离做计算,因此基于值的距离做计算,本身的影响就消除。
代码实操
sklearn.impute中的SimpleImputer类、pandas、numpy
import pandas as pd
import numpy as np
from