缺失值补充的方法

数据缺失的几种情况:

①:缺失值过大,比如说已经超过了正常值的1/2,这种就不需要考虑怎么样填补了,留着这个特征反而是加大误差,可以选择剔除
②:缺失值小于1/2的,但出现了连续型缺失,也可以认为是一大段一大段的,这种如果在前面的话,可以不用去考虑,直接作为NaN构成新样本加入样本中,如果是在中间或者后面,根据缺失量,可以考虑用均值或者是线性回归、灰度预测等抢救一下
③:缺失值远小于1/2,并且是非连续的,这里就可以用一些复杂的插值,或者说用前后数的平均,众数都能填补,并且填补完可能会有一些意想不到的效果。
在这里插入图片描述

train_data = pd.read_csv('train_data.csv', encoding='gbk') # 读取数据集
 
filter_feature = ['id','label'] # 过滤无用的维度
features = []
for x in train_data.columns: # 取特征
    if x not in filter_feature:
        features.append(x)
 
train_data_x = train_data[features] 
train_data_y = train_data['label']
X_train, X_test, y_train, y_test = train_test_split(train_data_x, train_data_y, random_state=1) # 划分训练集、测试集

Drop 函数

删除表中的某一行或者某一列更明智的方法是使用drop,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据。

df[df.isnull()]  #返回的是个truefalse的Series对象(掩码对象),进而筛选出我们需要的特定数据。
df[df.notnull()]

df.dropna()     #将所有含有nan项的row删除
df.dropna(axis=1,thresh=3)  #将在列的方向上三个为NaN的项删除
df.dropna(how='ALL')        #将全部项都是nan的row删除

print data.dropna() 和 print data[data.notnull()] 结果一样

print frame.drop(['a'])
print frame.drop(['Ohio'], axis = 1)

drop函数默认删除行,列需要加axis = 1

drop函数的使用:inplace参数

采用drop方法,有下面三种等价的表达式:

1. DF= DF.drop('column_name', axis=1)2. DF.drop('column_name',axis=1, inplace=True)
3. DF.drop([DF.columns[[0,1, 3]]], axis=1, inplace=True)   # Note: zero indexed

注意:凡是会对原数组作出修改并返回一个新数组的,往往都有一个 inplace可选参数。如果手动设定为True(默认为False),那么原数组直接就被替换。也就是说,采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;

而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置(如1情况所示)。

drop函数的使用:数据类型转换

df['Name'] = df['Name'].astype(np.datetime64)

填充空白值方法(fillna)

① 用固定值填充
train_data.fillna(0, inplace=True) # 填充 0
② 填充均值

对每一列的缺失值,填充当列的均值。

train_data.fillna(train_data.mean(),inplace=True) # 填充均值
③ 填充中位数
train_data.fillna(train_data.median(),inplace=True) # 填充中位数

数据填充参考地址:
https://blog.csdn.net/jingyi130705008/article/details/82670011?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164775828316781685331724%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164775828316781685331724&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogtop_positive~default-1-82670011.nonecase&utm_term=%E7%BC%BA%E5%A4%B1%E5%80%BC%E5%A1%AB%E5%85%85&spm=1018.2226.3001.4450

参考地址:https://blog.csdn.net/qq_33499889/article/details/105593479

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值