数据的预处理之缺失值处理
2018-03-04 22:18
183 查看
在训练一个模型之前需要做数据的预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。在实际的模型的训练样本数据中,样本可能会由于某些原因,造成一个或多个值的缺失。可能由于样本采集过程中的失误,或者度量方法对于某些特征不适用,或者数据未被填写等。在表格中缺失值通常是以空值的形式或者是NA(Not A Number)存在的。如果我们直接忽视这些缺失值可能有些算法无法处理这些缺失值,将会触发异常。如果,我们之间将包含缺失值的数据删除就会造成数据的浪费,而且有时候可能数据本来就不多,删除包含缺失值的数据之后数据就更少了,这将会影响我们训练出来模型的泛化能力。对于数据较多的情况,可以做一些删除处理。除此之外,我们还可以对缺失值进行填充,下面就介绍一些缺失数据的处理方式。
![](http://img.blog.csdn.net/20180304214141895?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
在使用python进行数据分析处理的时候,我们可以通过第三方库pandas来进行,可以极大的简化处理步骤。
![](http://img.blog.csdn.net/20180304214246508?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2.统计每行数据缺失值的分布情况
![](http://img.blog.csdn.net/20180304215318846?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](http://img.blog.csdn.net/20180304215546497?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
处理缺失值最简单的方法就是,将包含缺失值数据的列或者行从数据中删除,但这样会造成数据的浪费。
1.删除包含缺失值的行
![](http://img.blog.csdn.net/20180304215837718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2.删除包含缺失值的列
![](http://img.blog.csdn.net/2018030422000994?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
注意:在使用dropna方法的时候,我们可以通过设置inplace=True直接修改data的值,默认是是Flase。 data.dropna()
print(data)
![](http://img.blog.csdn.net/20180304220209461?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
data.dropna(inplace=True)
print(data)
![](http://img.blog.csdn.net/20180304220244301?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3.根据条件删除包含缺失值的数据除了直接删除包含缺失值的数据之外,我们还可以通过dropna提供的一些参数来根据条件对缺失值进行删除。
![](http://img.blog.csdn.net/20180304221019534?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
a.删除全为空值的行
![](http://img.blog.csdn.net/20180304221322236?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
b.删除行的缺失值个数大于指定阈值的行
![](http://img.blog.csdn.net/20180304221530938?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
c.删除指定列包含缺失值的行
![](http://img.blog.csdn.net/20180304221724187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMjk5NTc0NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
删除C列包含缺失值的行
在使用python进行数据分析处理的时候,我们可以通过第三方库pandas来进行,可以极大的简化处理步骤。
一、查看数据缺失值的分布情况
1.统计每列数据缺失值的分布情况import pandas as pd if __name__ == "__main__": data = pd.read_csv("data.csv") print(data.isnull().sum())
2.统计每行数据缺失值的分布情况
print(data.isnull().sum(axis=1))通过指定参数axis=1来实现对每行数据的缺失值进行统计,默认是axis=0表示列。
二、删除包含缺失值的数据
处理缺失值最简单的方法就是,将包含缺失值数据的列或者行从数据中删除,但这样会造成数据的浪费。
1.删除包含缺失值的行
data = pd.read_csv("data.csv") print(data.dropna())
2.删除包含缺失值的列
print(data.dropna(axis=1))
注意:在使用dropna方法的时候,我们可以通过设置inplace=True直接修改data的值,默认是是Flase。 data.dropna()
print(data)
data.dropna(inplace=True)
print(data)
3.根据条件删除包含缺失值的数据除了直接删除包含缺失值的数据之外,我们还可以通过dropna提供的一些参数来根据条件对缺失值进行删除。
a.删除全为空值的行
data = pd.read_csv("data.csv") print(data.dropna(how="all"))
b.删除行的缺失值个数大于指定阈值的行
#删除缺失值个数大于2的行 print(data.dropna(thresh=2))
c.删除指定列包含缺失值的行
print(data.dropna(subset=["C"]))
删除C列包含缺失值的行
相关文章推荐
- 【Scikit-Learn 中文文档】预处理数据 - 数据集转换 - 用户指南 | ApacheCN
- 数据预处理
- Python数据预处理:缺失值替换
- 数据预处理——One-hot编码
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 数据挖掘-数据预处理之数据清洗
- 数据挖掘-数据预处理之数据集成与变换
- 医疗大数据预处理
- 3.数据挖掘概念笔记——数据预处理
- 『TensorFlow』TFR数据预处理探究以及框架搭建
- java使用JDBC动态创建数据表及SQL预处理的方法
- 数据预处理—打乱训练数据顺序
- 数据挖掘 自习笔记 第二章 数据预处理
- 预处理数据的方法总结(使用sklearn-preprocessing)
- 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
- 【Scikit-Learn 中文文档】预处理数据 - 数据集转换 - 用户指南 | ApacheCN
- Codeforces Round #447 (Div. 2) D. Ralph And His Tour in Binary Country 二叉树、预处理、二分、数据结构
- 利用Python Pandas进行数据预处理-数据清洗
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- 读书笔记《数据挖掘概念与技术》第2章 数据预处理 2.3 数据清理