上一节中我们已经大概了解了数据的分布,这里我们考虑如何对数据进一步处理**(数据清洗)**(比较难,需要花较多的时间去处理数据)
1.缺失值分析及处理
缺失值出现的原因分析,采取合适的方式对缺失值进行填充
2.异常值分析及处理
根据测试集数据的分布处理训练集的数据分布,使用合适的方法找出异常值,对异常值进行处理
我们几个模块来进行分析:
1.加载一些必要的包,其中的一些包之前没有接触过,就自己查了一下
2.载入数据
可以看到我们的数据大概是什么样子
3.接下来就是对缺失值进行处理了。缺失值的处理手段大体可以分为:删除、填充、映射到高维(当做类别处理)。根据任务一,直接找到的缺失值情况是pu和pv;但是,根据特征nunique分布的分析,可以发现rentType存在"–“的情况,这也算是一种缺失值。此外,诸如rentType的"未知方式"houseToward的"暂无数据"等,本质上也算是一种缺失值,但是对于这些缺失方式,我们可以把它当做是特殊的一类处理,而不需要去主动修改或填充值。 将rentType的”–“转换成"未知方式"类别;pv/pu的缺失值用均值填充;buildYear存在"暂无信息”,将其用众数填充。关于OneHotEncoder独热编码和 LabelEncoder标签编码可以参考链接
https://zhuanlan.zhihu.com/p/35287916
iloc使用位置引用作为参数输入,而loc使用索引作为参数即当我们知道索引名的时候,值得注意的是,比如说整数2,Pandas会将2解释为一个索引的标签,而不是索引上的整数位置(与iloc相反):参考链接https://www.sogou.com/sie?hdq=AQxRG-4493&query=.loc%E5%92%8C.iloc%E7%9A%84%E7%94%A8%E6%B3%95&ie=utf8
4.异常值处理
主要思路:这里主要针对area和tradeMoney两个维度处理。针对tradeMoney,这里采用的是IsolationForest模型自动处理;针对areahetotalFloor是主观+数据可视化方式得到的结果,关于孤立森林的知识可以参考https://www.sogou.com/sie?hdq=AQxRG-4493&query=%E5%AD%A4%E7%AB%8B%E6%A3%AE%E6%9E%97&ie=utf8
最后,对我们的数据进行深度清洗,关于这个特征工程,个人觉得是个很玄学的问题,在这里我也思考了很久,也没有得出一个很好地结论,等思考出来了,再继续补上,这里先贴一个代码
下一阶段我们将进行特征工程,敬请期待