sklearn 数据填补缺失值

机器学习和数据挖掘中所使用的数据,永远不可能是完美的。很多特征,对于分析和建模来说意义非凡,但对于实 际收集数据的人却不是如此,因此数据挖掘之中,常常会有重要的字段缺失值很多,但又不能舍弃字段的情况。因 此,数据预处理中非常重要的一项就是处理缺失值。
从kaggle中简单的获取的泰坦尼克号的遇难者生存数据,对其中缺失的值进行填充,其中年龄可以用中位数,舱位可以用众数

import pandas as pd

data = pd.read_csv(r"C:\Users\JYuXuAN\Desktop\sklearn\预处理数据\Narrativedata.csv", index_col=0)  
# 防止多索引

# print(data.info())
# print()

Age = data.loc[:, "Age"].values.reshape(-1, 1)  # sklearn当中特征矩阵必须是二维
Age[:20]

print(Age[:20]) #前20行用作展示,实际上把所有的缺失值使用中位数填充

from sklearn.impute import SimpleImputer

imp_mean = SimpleImputer()  # 实例化,默认用均值填补
imp_median = SimpleImputer(strategy="median")  # 用中位数填补
imp_0 = SimpleImputer(strategy="constant", fill_value=0)  # 用0填补

imp_mean = imp_mean.fit_transform(Age)
imp_median = imp_median.fit_transform(Age)
imp_0 = imp_0.fit_transform(Age)

# 使用中位数填补Age
data.loc[:, "Age"] = imp_median

print(data.info())
print()


#使用众数填补Embarked
Embarked=data.loc[:,"Embarked"].values.reshape(-1,1)
imp_mode=SimpleImputer(strategy="most_frequent")
data.loc[:,"Embarked"]=imp_mode.fit_transform(Embarked)

print(data.info())
print()

使用pandas和numpy进行填补更加简单方便

import pandas as pd data = pd.read_csv(r"C:\Users\JYuXuAN\Desktop\sklearn\预处理数据\Narrativedata.csv",index_col=0)
 
data.head()
 
data.loc[:,"Age"] = data.loc[:,"Age"].fillna(data.loc[:,"Age"].median()) 
#.fillna 在DataFrame里面直接进行填补
 
data.dropna(axis=0,inplace=True) 
#.dropna(axis=0)删除所有有缺失值的行,
#.dropna(axis=1)删除所有有缺失值的列 
#参数inplace,为True表示在原数据集上进行修改,为False表示生成一个复制对象,不修改原数据,默认False
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值