Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
现实生活中的数据经常存在缺失值。产生缺失值的原因有很多,如观察资料未被记录、数据损坏等。由于很多机器学习算法不支持存在缺失值的数据集,正确处理缺失值就显得比较重要了。本文向大家介绍一些使用Python处理数据集中缺失值的方法,旨在帮助大家了解以下内容:
1、如何将数据集中无效或损坏的值标记为缺失值;
2、如何删除数据集中的缺失值;
3、如何通过均值估算数据集中存在的缺失值。
注意:运行本文的示例代码前,请确保已经安装Python2或者Python3,并安装好了Pandas, NumPy和Scikit-Learn,另外Scikit-Learn需要0.18及以上版本。
概览
本文分为以下六个部分的内容:
1、皮马印第安人糖尿病数据集(Pima Indians Diabetes Dataset)--该部分将介绍给大家一个已知存在缺失值的数据集
2、标记缺失值--该部分用来学习如何标记数据集中的缺失值
3、缺失值可能会带来的问题--该部分将了解到当数据集中存在缺失值时会对机器学习算法存在怎样的负面影响
4、删除存在缺失值的行--该部分介绍如何删除数据集中包含缺失值的行
5、估算缺失值--该部分介绍如何使用估算值来替换缺失值
6、支持存在缺失值数据集的一些算法--该部分将了解到一些支持缺失值的算法
首先,先来认识下我们的样例数据集。
1、皮马印第安人糖尿病数据集(Pima Indians Diabetes Dataset)
皮马印第安人糖尿病数据集涉及基于给定的医疗措施预测皮马印第安人5年内糖尿病的发病情况。这是一个二分类问题,每一类对应的观测值数量并不均衡。该数据集共有768组观测值,每组观测值有8个输入变量和1个输出变量。变量名称及含义如下所示:
0列为怀孕次数;
1列为口服葡萄糖耐量试验中2小时后的血浆葡萄糖浓度;
2列为舒张压(单位:mm Hg)
3列为三头肌皮褶厚度(单位:mm)
4列为餐后血清胰岛素(单位:mm)
5列为体重指数(体重(公斤)/ 身高(米)^2)