【python】数据挖掘分析清洗——缺失值处理方法汇总


本文链接:https://blog.csdn.net/weixin_47058355/article/details/128866686

数据挖掘系列:
缺失值处理方法汇总
离散化方法汇总
离群点(异常值)处理方法汇总
标准化(数据归一化)处理方法汇总
特征选择(特征筛选)方法汇总
特征选择筛选(降维)方法汇总
分类预测方法汇总

前言

看了下网络上做完整的数据清洗方法总结的人不多,这几年刚好学的各类方法都有点杂乱,因此自己做个总结,算是方便自己,也帮助别人,也希望大家看到错误,能在评论区或者私信说一下,互相探讨学习一下。

一、查看缺失值比例

常见的查看缺失值方法,第一种计算缺失值比例

queshi_bili=((data_train.isnull().sum())/data_train.shape[0]).sort_values(ascending=False).map(lambda x:"{:.2%}".format(x)) #queshibili是数据名 data_train是训练集数据
queshi_bili

在这里插入图片描述

第二种是使用describe()函数

data_train.describe()

在这里插入图片描述

二、基于统计的缺失值处理方法

缺失值的处理方法我一般分为两种,一种是基于统计学的填补方法,另外一种是基于机器学习的填补方法。
后续以data_train当中的 其他流动资产这个特征为例
在这里插入图片描述

2.1 删除

一些缺失值比例过大的数据还是需要将其删除的,缺失值填补也仅仅只是基于当前数据进行预测,计算的,存在一定误差。但填补的数据过多,反而只会带来误差。

del data['列名']

在这里插入图片描述

按照比例进行删除,这里是按照80%的比例进行删除

t = int(0.8*data_train.shape[0]) # 确定删除的比例下,占数据多少
data_train_shanchu = data_train.dropna(thresh=t,axis=1)#保留至少有 t 个非空的列
data_train_shanchu

在这里插入图片描述

2.2 填充固定值

将缺失值都填充为给定常数

data.fillna(0, inplace=True) # 填充 0 第一个参数控制填充的常数

在这里插入图片描述

也可以通过字典的形式,进行固定值填充,所给字典不够填充的,就还是处于缺失值状态

data.fillna({0:1000, 1:100, 2:0, 4:5}) 

在这里插入图片描述

2.3 填充中位数、平均数、众数

这三个数代码相近,只需要将函数改为其他的即可。图片是以平均数填充为例

data.fillna(data.mean(),inplace=True) # 填充均值
data.fillna(data.median(),inplace=True) # 填充中位数
data.fillna(data.mode(),inplace=True) # 填充众数

在这里插入图片描述

2.4 插值法填充,前值或者后值填充

插值法原理是将缺失值的数据的上下两个数据相加除以2,也就是取平均,缺点是如果前面没有值和后面没有值,都将会导致缺失值依然存在。

data = data.interpolate()#上下两个数据的均值进

在这里插入图片描述

填充前面值或者后面值,填充缺失值的上一个数据或者下一个数据,缺点与插值法相同,缺点是如果前面没有值和后面没有值,都将会导致缺失值依然存在。(图片以前值为例)

data.fillna(method='pad', inplace=True) # 填充前一条数据的值,但是前一条也不一定有值
data.fillna(method='bfill', inplace=True) # 填充后一条数据的值,但是后一条也不一定有值

在这里插入图片描述

三、基于机器学习的缺失值填充

采用的机器学习算法对于缺失值进行填充,从精度上是优于统计方法的填充,但是相对的需要付出的算力和时间是远远大于统计方法的。
这里仅仅对代码实现作为一个演示,其中的算法原理,可以自行搜索。

3.1 基于knn算法进行填充

from fancyimpute import KNN
data_train_knn = pd.DataFrame(KNN(k=6).fit_transform(data_train_shanchu)#这里的6是对周围6个数据进行欧式距离计算,得出缺失值的结果,可以自行调整
columns=data_train_shanchu.columns)
data_train_knn

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 基于随机森林进行填充

使用随机森林进行缺失值填补,其他像lightgbm,xgboost都是可行的,这里以随机森林为例子
操作就是将其他特征作为数据 然后对缺失的数据进行填补,得到缺失值

from sklearn.ensemble import RandomForestRegressor
#利用随机森林树进行填补缺失值
train_data = train_data[['其他流动资产', '货币资金', '资产总计']]
df_notnull = train_data.loc[(train_data['其他流动资产'].notnull())]
df_isnull = train_data.loc[(train_data['其他流动资产'].isnull())]
X = df_notnull.values[:,1:]
Y = df_notnull.values[:,0]

# use RandomForestRegression to train data
RFR = RandomForestRegressor(n_estimators=1000, n_jobs=-1)
RFR.fit(X,Y)
predict = RFR.predict(df_isnull.values[:,1:])
predict

在这里插入图片描述

总结

大概目前的话,常用的缺失值处理方法就这些,后续的话我会接着更新其他的数据清洗的方法。我就不设置付费专栏啦,希望对各位有帮助!

  • 18
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
数据挖掘是一种通过解析大量数据集合,发现其中隐含的有用信息以及规律的过程。它涉及到数据的收集、处理分析和解释等多个环节。 在数据挖掘的过程中,填空题是一种常见的技术手段。填空题是指通过填写缺失的数据,来推断并补充完整数据集的过程。在csdn这个平台上,填空题可以用于数据集中存在一些缺失的情况,有助于提高数据的完整性和准确性。 填空题的难点在于如何通过已有的数据进行推断。通常我们可以使用一些统计方法和机器学习算法来填补缺失。比如,如果待填补的缺失是数型数据,我们可以通过均、中位数或者回归等方法来进行填充;如果是类别型数据,可以使用众数或者最近邻法来进行填充。此外,还可以考虑利用相似性算法,比如k近邻算法,找到与缺失最相似的数据样本进行填补。 数据挖掘填空题的目的是为了获得更完整的数据集,从而提高数据挖掘的准确性和可靠性。然而,在进行填空题的过程中,需要注意数据集的特点和缺失的类型,选择合适的填补方法,并确保填补后的数据与实际情况相符。同时,需要进行适当的评估和验证,以确保填空后的数据能够在后续的数据挖掘过程中发挥作用。 总之,数据挖掘填空题是数据挖掘过程中的一项重要任务,通过填补缺失来提高数据的完整性和准确性。在csdn这个平台上,我们可以借助各种统计方法和机器学习算法来进行填补,并进行适当的评估和验证。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值