您的位置:首页 > 其它

数据的预处理之缺失值处理

2018-03-04 22:18 183 查看
在训练一个模型之前需要做数据的预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。在实际的模型的训练样本数据中,样本可能会由于某些原因,造成一个或多个值的缺失。可能由于样本采集过程中的失误,或者度量方法对于某些特征不适用,或者数据未被填写等。在表格中缺失值通常是以空值的形式或者是NA(Not A Number)存在的。如果我们直接忽视这些缺失值可能有些算法无法处理这些缺失值,将会触发异常。如果,我们之间将包含缺失值的数据删除就会造成数据的浪费,而且有时候可能数据本来就不多,删除包含缺失值的数据之后数据就更少了,这将会影响我们训练出来模型的泛化能力。对于数据较多的情况,可以做一些删除处理。除此之外,我们还可以对缺失值进行填充,下面就介绍一些缺失数据的处理方式。



在使用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列包含缺失值的行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: