缺失值的处理

 删除含有缺失值的列

展开数据中含有缺失值的列

cols_with_missing = [col for col in data.columns if data[col].isnull().any()]

 删除列

reduced_data= data.drop(cols_with_missing, axis=1)

SimpleImputer

参数解释

  • missing_values:int, float, str, (默认)np.nan或是None, 即缺失值是什么。
  • strategy:空值填充的策略,共四种选择(默认)mean、median、most_frequent、constant。constant表示将空值填充为自定义的值,但这个自定义的值要通过fill_value来定义。
  • fill_value:str或数值,默认为Zone。当strategy == "constant"时,fill_value被用来替换所有出现的缺失值(missing_values)。fill_value为Zone,当处理的是数值数据时,缺失值(missing_values)会替换为0,对于字符串或对象数据类型则替换为"missing_value" 这一字符串。
  • verbose:int,(默认)0,控制imputer的冗长。
  • copy:boolean,(默认)True,表示对数据的副本进行处理,False对数据原地修改。
  • add_indicator:boolean,(默认)False,True则会在数据后面加入n列由0和1构成的同样大小的数据,0表示所在位置非缺失值,1表示所在位置为缺失值。

 

from sklearn.impute import SimpleImputer

#进行插补
my_imputer = SimpleImputer()
data_new=pd.DateFrame(my_imputer.fit_transform(data)

#如果划分了数据集用以下方式
imputed_X_train = pd.DataFrame(my_imputer.fit_transform(X_train))
imputed_X_valid = pd.DataFrame(my_imputer.transform(X_valid))

# 复制列名
imputed_X_train.columns = X_train.columns
imputed_X_valid.columns = X_valid.columns

插补扩展

插补缺失值,同时跟踪插补的值

#复制数据集
X_train_plus = X_train.copy()
X_valid_plus = X_valid.copy()

# 创建新的列
for col in cols_with_missing:
    X_train_plus[col + '_was_missing'] = X_train_plus[col].isnull()
    X_valid_plus[col + '_was_missing'] = X_valid_plus[col].isnull()

# 进行插补
my_imputer = SimpleImputer()
imputed_X_train_plus = pd.DataFrame(my_imputer.fit_transform(X_train_plus))
imputed_X_valid_plus = pd.DataFrame(my_imputer.transform(X_valid_plus))

# 复制列名
imputed_X_train_plus.columns = X_train_plus.columns
imputed_X_valid_plus.columns = X_valid_plus.columns

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值