Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >缺失值处理,你真的会了吗?

缺失值处理,你真的会了吗?

作者头像
数据STUDIO
发布于 2021-06-24 01:58:53
发布于 2021-06-24 01:58:53
1.7K00
代码可运行
举报
文章被收录于专栏:数据STUDIO数据STUDIO
运行总次数:0
代码可运行

缺失值处理是一个数据分析工作者永远避不开的话题,如何认识与理解缺失值,运用合适的方式处理缺失值,对模型的结果有很大的影响。本期Python数据分析实战学习中,我们将详细讨论数据缺失值分析与处理等相关的一系列问题。

作为数据清洗的一个重要环节,一般从缺失值分析和缺失值处理两个角度展开:

  1. 缺失值分析
  2. 缺失值处理

Part 1

缺失值分析

数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确,以下从缺失值类型、产生的原因及影响等方面展开分析。

  • 缺失值类型

1、随机丢失(MAR,Missing at Random)

数据丢失的概率与丢失的数据本身无关,而仅与部分已观测到的数据有关。

2、完全随机丢失(MCAR,Missing Completely at Random)

数据的缺失是完全随机的,不依赖于任何不完全变量或完全变量,不影响样本的无偏性。

3、非随机丢失(MNAR,Missing not at Random)

数据的缺失与不完全变量自身的取值有关。

正确的理解和判断缺失值的类型,对工作中对缺失值分析和处理带来很大对便利,但因没有一套成熟但缺失值类型判断方法,大多考经验处理,这里不作过多阐述。

  • 缺失值成因

1、信息暂时无法获取、获取信息代价太大;

2、信息因人为因素没有被记录、遗漏或丢失;

3、部分对象或某些属性不可用或不存在;

4、信息采集设备故障、存储介质、传输媒体或其他物理原因造成的数据丢失。

  • 缺失值影响

1、使系统丢失大量的有用信息;

2、使系统中所表现出的不确定性更加显著,系统中蕴涵的确定性成分更难把握;

3、包含空值的数据会使数据挖掘过程陷入混乱,导致不可靠的输出。

  • 缺失值分析

数据缺失值分析属于数据探索分析(Exploratory Data Analysis,EDA)的里重要的一步,其工具通常是统计分析和数据可视化。统计分析为我们提供了假设不正确的理论概率,即显着性水平,而数据可视化工具给我们带来了有关数据分布的印象,有助于从概念上验证他们的假设。

一般情况下,拿到一份数据,我们将使用data.info(); data.describe()来查看数据的基本情况。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> data.info()

输出结果:

结果图中绿色框是数据总索引数,蓝色框为每个变量的总记录数,它们的差值为每个变量的缺失值总数。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> data.describe()

输出结果:

结果图中count为每个变量的非空计数,其与总索引数的差值,即为缺失值总数。

以上方法在查看数据的总体概况下表现较佳,但用于数据缺失值分析显得力不从心。下面介绍几个更加便于缺失值分析的方法。

  • 统计缺失值

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import pandas as pd
>>> missing=data.isnull().sum().reset_index().rename(columns={0:'missNum'})
>>> missing.head(10)

输出结果:

为方便展示,本例中只显示前10个特征。从上面数据描述查看信息data.info()可以看出,本数据总计为689945条,从missNum中可以清洗看出每条特征变量的缺失情况:索引0-4为无缺失特征,索引8为缺失最少,而索引6则缺失超60万条。

  • 计算缺失值比例

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> missing['missRate']=missing['missNum']/data.shape[0]
>>> missing.head(10)

data.shape[0] 得到数据记录总数。 missing.head(10) 只显示前10条记录。

输出结果:

只看缺失数量并不是很直观,可以用缺失数量missNum 比数据总量data.shape[0] 得到缺失比值missRate,这样更加直观地看出缺失值相对数量,便于后续选择合适的缺失值处理。

  • 按照缺失率排序显示

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> miss_analy=missing[missing.missRate>0].sort_values(by='missRate', ascending=False)
>>> miss_analy.head(10)

miss_analy 存储的是每个变量缺失情况的数据框。

输出结果:

将所有特征按照缺失比例降序排列,更加有序地看出缺失值情况,便于后面对拥有不同缺失比例的特征采用不同的处理策略。

  • 缺失值可视化

matplotlib库--条形图

利用常规matplotlib.pyplot库可视化出每个变量的缺失值比例,以及总体排名情况,一目了然。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import matplotlib.pyplot as plt
>>> import pylab as pl
>>> colors = ['DeepSkyBlue' ,'DeepPink', 'Yellow', 'LawnGreen' ,'Aqua', 'DarkSlateGray']
>>> fig = plt.figure(figsize=(20,6))
>>> plt.bar(np.arange(miss_analy.shape[0]), list(miss_analy.missRate.values), align = 'center',color=colors)
>>> font = {'family' : 'Times New Roman','weight' : 'normal','size' : 23,}
>>> plt.title('Histogram of missing value of variables',fontsize=20)
>>> plt.xlabel('variables names',font)
>>> plt.ylabel('missing rate',font)
# 添加x轴标签,并旋转90>>> plt.xticks(np.arange(miss_analy.shape[0]),list(miss_analy['index']))
>>> pl.xticks(rotation=90)
# 添加数值显示
>>> for x,y in enumerate(list(miss_analy.missRate.values)):
     plt.text(x,y+0.08,'{:.2%}'.format(y),ha='center',rotation=90)    
>>> plt.ylim([0,1.2])
# 保存图片
>>> fig.savefig('missing.png')
>>> plt.show()

输出结果:

条形图绘制参数详解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **kwargs)

x : sequence of scalars 传递数值序列,指定条形图中x轴上的刻度值。

height : scalar or sequence of scalars传递标量或标量序列,指定条形图y轴上的高度。

width : scalar or array-like, optional, default: 0.8 指定条形图的宽度,默认为0.8.

bottom : scalar or array-like, optional, default: 0条形基的y坐标, 用于绘制堆叠条形图。

align : {'center', 'edge'}, optional, default: 'center'

*"center": 在 x 位置上居中。

*"edge": 用 x 位置对齐条的左边。要对齐右边缘上的条,请通过一个负的 width 和 "align='edge' "。

color : scalar or array-like, optional 指定条形图的填充色。

edgecolor : scalar or array-like, optional 指定条形图的边框色。

linewidth : scalar or array-like, optional 指定条形图边框的宽度,如果指定为0,表示不绘制边框。

tick_label : string or array-like, optional 指定条形图的刻度标签。

xerr, yerr : scalar or array-like of shape(N,) or shape(2,N), optional, default None

如果 not None,表示在条形图的基础上添加误差棒;

值是相对于数据 +/- 误差棒大小;

*标量: 对称的+/- 误差棒值为所有条;

*shape(N,): 每个bar对称+/- 误差棒值;

*shape(2,n): 为每个bar分别设置-和+ 误差棒值。第一行包含较低的错误,第二行包含上的错误。

* None:没有错误。(默认)

label : string or array-like, optional 指定条形图的标签,一般用以添加图例。

ecolor : scalar or array-like, optional, default: 'black'ecolor 指定条形图误差棒的颜色。*align:指定x轴刻度标签的对齐方式,默认为'center',表示刻度标签居中对齐,如果设置为'edge',则表示在每个条形的左下角呈现刻度标签。

log : bool, optional, default: False 是否对坐标轴进行log变换。

**kwargs 关键字参数,用于对条形图进行其他设置,如透明度等。

missingno库--矩阵图、条形图、热图、树状图

mssingno库提供了一个灵活且易于使用的缺失数据可视化和实用程序的小工具集,可以快速直观地总结数据集的完整性。

相对于前面介绍的利用matplotlib 库可视化缺失值情况,更加方便,可根据实际情况做选择。

  • 矩阵图

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import missingno as msno
>>> msno.matrix(data, labels=True)

输出结果:

矩阵图绘制参数详解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msno.matrix(df,filter=None, n=0, p=0, sort=None, figsize=(25, 10), width_ratios=(15, 1), color=(0.25, 0.25, 0.25), fontsize=16, labels=None, sparkline=True, inline=False, freq=None, ax=None)

df : DataFrame, default None 被映射的 "DataFrame"

filter : str, default None 用于热图的滤镜。可以是"top""bottom",或"None"(默认)之一。

n : int, default 0过滤后的数据格式中包含的最大列数。

P : int, default 0过滤后的数据框中列的最大填充百分比。

sort : str, default None 要应用的行排序顺序。可以是"ascending""descending",或"None"(默认)。

figsize : tuple, default (25, 10) 显示的图形的大小。

fontsize : int, default 16图形的字体大小。

labels : list, default None是否显示列名。如果有的话,当数据列数为50列或更少默认为基础数据标签,超过50列时不使用标签。

sparkline : bool default True 是否显示sparkline

width_ratios : tuple default (15,1) 矩阵的宽度与sparkline的宽度之比。如果"sparkline=False",则不执行任何操作。

color : default (0.25,0.25,0.25) 填充栏的颜色。

实际使用中,直接使用默认值即能满足大部分情况下的需求。如常用的参数labels能够根据数据标签的数量自动选择参数值。

  • 条形图

---- 是针对标签列缺失值的简单可视化

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> msno.bar(data.iloc[:, 0: 18])  # 使用默认参数即可

输出结果:

矩阵图绘制参数简介:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msno.bar(df, figsize=(24, 10), fontsize=16, labels=None, log=False, color='dimgray', inline=False, filter=None, n=0, p=0, sort=None, ax=None,)

从参数列表中可以看出,条形图与矩阵图参数类似,其中参数inline将在后面的版本中删除,可以忽略。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"The 'inline' argument has been deprecated, and will be removed in a future version"

missingno的条形图与matplotlib条形图有异曲同工之秒:封装的库,使用更加方便,既能看出缺失值数量,又能看出缺失值对百分比。可通过参数对特征变量按照缺失值缺失情况排序显示。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> msno.bar(data.iloc[:, 0: 18], sort='descending')

输出结果:

细心的读者不难看出,此图与上图(未排序)的主题风格并不相同,可利用matplotlib.pyplot来设置主题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import matplotlib.pyplot as plt
>>> plt.style.use('seaborn')
>>> %matplotlib inline
  • 热图

----相关性热图措施无效的相关性:一个变量的存在或不存在如何强烈影响的另一个的存在。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> msno.heatmap(data.iloc[:, 0: 13])  # 使用默认参数即可

输出结果:

两个变量的无效相关范围从-1(如果一个变量出现,另一个肯定没有)到0(出现或不出现的变量对彼此没有影响)到1(如果一个变量出现,另一个肯定也是)。 数据全缺失或全空对相关性是没有意义的,所以就在图中就没有了,比如date列就没有出现在图中。 大于-1和小于1表示有强烈的正相关和负相关,但是由于极少数的脏数据所以并不绝对,这些例外的少数情况需要在数据加工时候予以注意。 热图方便观察两个变量间的相关性,但是当数据集变大,这种结论的解释性会变差。

  • 树状图

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> msno.dendrogram(data.iloc[:, 0: 18])

输出结果:

树状图采用由scipy提供的层次聚类算法通过它们之间的无效相关性(根据二进制距离测量)将变量彼此相加。在树的每个步骤中,基于哪个组合最小化剩余簇的距离来分割变量。变量集越单调,它们的总距离越接近0,并且它们的平均距离越接近零。 在0距离处的变量间能彼此预测对方,当一个变量填充时另一个总是空的或者总是填充的,或者都是空的。 树叶的高度显示预测错误的频率。 和矩阵Matrix一样,只能处理50个变量,但是通过简单的转置操作即可处理更多更大的数据集。

这样的统计计算以及可视化基本已经看出哪些变量缺失,以及缺失比例情况,对数据即有个缺失概况。


Part 2

缺失值处理

缺失值处理思路

先通过一定的方法找到缺失值,接着分析缺失值在整体样本中的分布占比,以及缺失值是否具有显著的无规律分布特征,即第一部分介绍到缺失值分析。然后考虑使用的模型中是否满足缺失值的自动处理,最后决定采用那种缺失值处理方法,即接下来介绍到缺失值处理。

缺失值处理⽅法的选择,主要依据是业务逻辑和缺失值占比,在对预测结果的影响尽可能小的情况下,对缺失值进行处理以满足算法需求,所以要理解每个缺失值处理方法带来的影响,下⾯的缺失值处理⽅法没有特殊说明均是对特征(列,变量)的处理。

  • 丢弃
  • 占⽐较多,如80%以上时,删除缺失值所在的列如果某些行缺失值占比较多,或者缺失值所在字段是苛刻的必须有值的,删除行。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 删除‘col’列
>>> data.drop('col', axis=1, inplace=True)

# 删除数据表中含有空值的行
>>> data.dropna()

# 丢弃某几列有缺失值的行
>>> data.dropna(axis=0, subset=['a','b'], inplace=True)

# 去掉缺失比例大于80%以上的变量
>>> data.dropna(thresh=len(data)*0.2, axis=1)

参数详解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

inplace : bool, default False 如果为真,执行就地操作并返回None。

subset : array-like, optional 要考虑沿着其他轴的标签,例如,如果您要删除行,这些将是要包含的列的列表。

thresh : int, optional, default 'any' 只保留至少有thresh个非na值的行。

how : {'any', 'all'},default 'any' 确定是否从DataFrame中删除了行或列至少有一个NA或全部NA。* 'any':如果有任何NA值,删除行或列。* 'all':如果所有的值都是NA,删除行或列。

axis : {0 or 'index', 1 or 'columns'}, default 0 确定包含缺失值的行或列是否为移除。* 0,或“索引”:删除包含缺失值的行。* 1,或“columns”:删除包含缺失值的列。

  • 补全
  • 占比一般,30%-80%时,将缺失值作为单独的⼀个分类如果特征是连续的,则其他已有值分箱如果特征是分类的,考虑其他分类是否需要重分箱
    1. 等深分箱法(统一权重法): 将数据集按记录(行数)分箱,每箱具有相同的记录数(元素个数)。每箱记录数称为箱子深度(权重)。
    2. 等宽分箱法(统一区间法): 使数据集在整个属性值的区间上平均分布,即每个箱的区间范围(箱子宽度)是一个常量。
    3. 用户自定义区间:当用户明确希望观察某些区间范围内的数据时,可根据需要自定义区间。
  • 占⽐比少,10%-30%时,一般使用模型法,基于已有的其他字段,将缺失字段作为目标变量进行预测,从而得到最为可能的不全值。连续型变量用回归模型补全;分类变量用分类模型补全。如进行多重插补、KNN算法填充、随机森林填补法,我们认为若干特征之间有相关性的,可以相互预测缺失值。

A. 插值填充

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  interpolate()插值法,缺失值前后数值的均值,但是若缺失值前后也存在缺失,则不进行计算插补。
>>> data['a'] = data['a'].interpolate()

# 用前面的值替换, 当第一行有缺失值时,该行利用向前替换无值可取,仍缺失
>>> data.fillna(method='pad')

# 用后面的值替换,当最后一行有缺失值时,该行利用向后替换无值可取,仍缺失
>>> data.fillna(method='backfill') # 用后面的值替换

B. 多重插补法

常见插值函数:牛顿插值法、分段插值法、样条插值法、Hermite插值法、埃尔米特插值法和拉格朗日插值法,以下详细介绍拉格朗日插值法的原理和使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> from scipy.interpolate import lagrange
>>> x=[1,2,3,4,7]
>>> y=[5,7,10,3,9]
>>> f=lagrange(x,y)
<class 'numpy.lib.polynomial.poly1d'> 4
# 这一行是输出a的类型,以及最高次幂。

>>> print(f)
       4         3         2
0.5472 x - 7.306 x + 30.65 x - 47.03 x + 28.13
# 第一行和第二行就是插值的结果,显示出的函数。第二行的数字是对应下午的x的幂,

>>> print(f(1),f(2),f(3))
5.000000000000007 7.000000000000014 10.00000000000005
#  此行是代入的x值,得到的结果。即用小括号f(x)的这种形式,可以直接得到计算结果。

>>> print(f[0],f[2],f[3])
28.13333333333334 30.65277777777778 -7.3055555555555545
# 此行是提取出的系数。即可以用f[a]这种形式,来提取出来对应幂的系数。

拉格朗日插值法 from scipy.interpolate import lanrange对于空间上已知的n个点(无两点在一条直线上)可以找到一个 n-1 次多项式 ,使得多项式曲线过这个点。 需满⾜的假设:MAR:Missing At Random,数据缺失的概率仅和已观测的数据相关,即缺失的概率与未知的数据无关,即与变量的具体数值无关。迭代(循环)次数可能的话超过40,选择所有的变量甚至额外的辅助变量。

C. KNN填充

利用KNN算法填充,将目标列当做目标标签,利用非缺失的数据进行KNN算法拟合,最后对目标标签缺失值进行预测。(对于连续特征一般是用加权平均法,对于离散特征一般是用加权投票法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
>>> def KNN_filled_func(X_train, y_train, X_test, k=3, dispersed=True): 
...     """
...     :params: X_train 为目标列中不含缺失值的数据(不包括目标列)
...     :params: y_train 为不含缺失值的目标标签
...     :params: X_test 为目标列中为缺失值的数据(不包括目标列)
...     """
...     if dispersed:
...         KNN = KNeighborsClassifier(n_neighbors=k, weights="distance")
...     else:
...         KNN = KNeighborsRegressor(n_neighbors=k, weights="distance")
...     KNN.fit(X_train, y_train)
...     return X_test.index, KNN.predict(X_test)

D. 随机森林填补法

其思想与KNN填补法类似。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
>>> def RF_filled_func(X_train, y_train, X_test, k = 3, dispersed = True):
...     """
...     :params: X_train 为目标列中不含缺失值的数据(不包括目标列)
...     :params: y_train 为不含缺失值的目标标签
...     :params: X_test 为目标列中为缺失值的数据(不包括目标列)
...     """
...      if dispersed:
...          rf = RandomForestRegressor()
...      else:
...          rf = RandomForestClassifier()
...      rf.fit(X_train, y_train)
...      return X_test.index, rf.predict(X_test)
  • 占⽐较少,10%以下,一般使用统计法(连续型变量用均值、中位数、加权均值;分类型变量用众数)。
    1. 平均值适用于近似正态分布数据,观测值较为均匀散布均值周围;
    2. 中位数适用于偏态分布或者有离群点数据,中位数是更好地代表数据中心趋势;
    3. 众数一般用于类别变量,无大小、先后顺序之分。
  • pandas 内 df.fillna() 处理缺失值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 均值填充
>>> data['col'] = data['col'].fillna(data['col'].means())
# 中位数填充
>>> data['col'] = data['col'].fillna(data['col'].median())
# 众数填充
>>> data['col'] = data['col'].fillna(stats.mode(data['col'])[0][0])
  • sklearn.preprocessing.Imputer() 处理缺失值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> from sklearn.preprocessing import Imputer
>>> imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
>>> imputed_data = pd.DataFrame(imr.fit_transform(df.values),columns=df.columns)
>>> imputed_data

此外还有结合实际,运用专家补全。

  • 真值转化法 认为缺失值本身以一种数据分布规律存在。将变量的实际值和缺失值都作为输入维度参与后续数据处理和模型计算中。
  • 不处理 对于一些模型对缺失值有容忍度或灵活处理方法,可不处理缺失值。如KNN、决策树、随机森林、神经网络、朴素贝叶斯、DBSCAN等。

本期主要从缺失值分析--缺失值类型、缺失值成因、缺失值影响;以及缺失值处理--丢弃、补全、真值转换、不处理等各个方面讨论缺失值。数据中缺失值会因数据本身的情况会有不同的处理方法,需要具体问题具体分析。以上介绍了比较常用的缺失值分析和缺失值处理思路和方法,您可以根据数据的具体情况以及自身偏好选择合适等处理方式。

当然,如果您有更好的方法或技巧或思路,可以联系方式笔者,一起讨论,一起学习。

== 如果您觉得本期内容对您有所帮助,请三连支持下笔者,谢谢!==

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【缺失值处理】拉格朗日插值法—随机森林算法填充—sklearn填充(均值/众数/中位数)
缺失值的处理准备数据1 sklearn填充(1)使用均值进行填补(连续型特征)(2)使用中位数、0进行填补(连续型特征)(3)使用众数进行填补(离散型特征)(4)KNN填补
用户7886150
2020/12/30
3.1K0
【python】数据挖掘分析清洗——缺失值处理方法汇总
本文链接:https://blog.csdn.net/weixin_47058355/article/details/128866686
用户10828570
2023/11/07
5120
缺失值可视化Python工具库:missingno
无论是打比赛还是在实际工程项目中,都会遇到数据缺失的情况,如果数据集较小,还能在excel或者其他可视化软件大致看一下导致数据缺失的原因,那么数据集较大时,想要探索其中规律,无疑难度也是越来越大。
统计学家
2020/12/08
4.3K0
缺失值可视化Python工具库:missingno
机器学习基础:缺失值的处理技巧(附Python代码)
在数据分析和建模中,经常会遇到变量值缺失的情况,这是非常常见的。为了保证数据指标的完整性以及可利用性,通常我们会采取特殊的方式对其进行处理。
Python数据科学
2020/08/27
2.5K0
机器学习基础:缺失值的处理技巧(附Python代码)
【Python数据分析基础】: 数据缺失值处理
再好的模型,如果没有好的数据和特征质量,那训练出来的效果也不会有所提高。数据质量对于数据分析而言是至关重要的,有时候它的意义会在某种程度上会胜过模型算法。
Python数据科学
2018/08/06
2.6K0
【Python数据分析基础】: 数据缺失值处理
102-R数据整理12-缺失值的高级处理:用mice进行多重填补
比如multivariate imputation by chained equations (MICE) 方法:
北野茶缸子
2022/04/05
7.7K1
102-R数据整理12-缺失值的高级处理:用mice进行多重填补
机器学习基础:缺失值的处理技巧(附Python代码)
在数据分析和建模中,经常会遇到变量值缺失的情况,这是非常常见的。为了保证数据指标的完整性以及可利用性,通常我们会采取特殊的方式对其进行处理。
统计学家
2020/08/28
2.5K0
机器学习基础:缺失值的处理技巧(附Python代码)
独家 | 手把手教你处理数据中的缺失值
本文为大家介绍了数据缺失的原因以及缺失值的类型,最后列举了每一种缺失值类型的处理方法以及优缺点。
数据派THU
2020/07/13
1.4K0
Python 数据竞赛常用 | 可视化数据集缺失情况
无论是打比赛还是在实际工程项目中,都会遇到数据缺失的情况,如果数据集较小,还能在 Excel 或者其他可视化软件大致看一下导致数据缺失的原因。但当数据集较大时,手工查看每个变量的缺失值是非常麻烦的一件事情。
叶庭云
2022/05/09
3500
Python 数据竞赛常用 | 可视化数据集缺失情况
R语言之缺失值处理
在实际的数据分析中,缺失数据是常常遇到的。缺失值(missing values)通常是由于没有收集到数据或者没有录入数据。
timerring
2023/10/13
6810
R语言之缺失值处理
【Python基础系列】常见的数据预处理方法(附代码)
本文简单介绍python中一些常见的数据预处理,包括数据加载、缺失值处理、异常值处理、描述性变量转换为数值型、训练集测试集划分、数据规范化。
统计学家
2020/08/28
18.8K0
实用!Python数据填充与缺失值处理:完善数据质量
在数据处理和分析过程中,经常会遇到数据中存在缺失值的情况。合理处理缺失值能够帮助我们完善数据质量,提高建模和分析的准确性。下面将介绍 Python 中常用的数据填充和缺失值处理方法,包括删除缺失值、插值法和回归方法等,以及如何选择合适的方法来处理不同类型的缺失值。
用户1289394
2024/04/19
5190
实用!Python数据填充与缺失值处理:完善数据质量
Kaggle知识点:缺失值处理
在进行数据竞赛中,数据预处理阶段经常需要对数据进行缺失值处理。关于缺失值的处理并没有想象中的那么简单。以下为一些经验分享,基本涵盖了大部分处理方式。
Coggle数据科学
2022/05/05
2K0
Kaggle知识点:缺失值处理
机器学习中处理缺失值的7种方法
现实世界中的数据往往有很多缺失值。丢失值的原因可能是数据损坏或未能记录数据。在数据集的预处理过程中,丢失数据的处理非常重要,因为许多机器学习算法不支持缺失值。
磐创AI
2020/08/17
8K0
机器学习中处理缺失值的7种方法
手把手教你如何解决日常工作中的缺失值问题(方法+代码)
再好的模型,如果没有好的数据和特征质量,那训练出来的效果也不会有所提高。数据质量对于数据分析而言是至关重要的,有时候它的意义会在某种程度上会胜过模型算法。
1480
2021/12/06
9960
手把手教你如何解决日常工作中的缺失值问题(方法+代码)
3种缺失值情况需要区别对待
首先需要去上游(数据如何产生的)弄清楚缺失值的来源,然后要理解不同形式的缺失值,如下:
生信技能树
2020/04/14
1.1K0
机器学习实战 | 数据探索(缺失值处理)
点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接 接着上一篇:《机器学习实战-数据探索》介绍,机器学习更多内容可以关注github项目:machine learning(https://github.com/jacksu/machine-learning) 《机器学习实战-数据探索》介绍了1、变量识别;2、单变量分析;3、双变量分析,现在接着介绍缺失值处理。 为什么需要处理缺失值呢? 训练数据集中缺少的数据可以减少模型的拟合,或者可能导致模型偏差,因为没有正确地分析变量的行为
用户1332428
2018/03/08
1.8K0
机器学习实战 | 数据探索(缺失值处理)
「数据分析」之零基础入门数据挖掘
摘要:对于数据挖掘项目,本文将学习应该从哪些角度分析数据?如何对数据进行整体把握,如何处理异常值与缺失值,从哪些维度进行特征及预测值分析?
Datawhale
2020/04/07
9600
数据清洗 Chapter07 | 简单的数据缺失处理方法
使用Scipy库的interpolate模块实现拉格朗日插值 步骤如下: 1、确定非缺失值的索引 2、找出含有缺失值列的其他值 3、调用lagrange函数得出拉格朗日插值多项式的系数 4、输入缺失值所在索引,返回对应的插值
不温卜火
2020/10/28
1.8K0
数据清洗 Chapter07 | 简单的数据缺失处理方法
3000字详解四种常用的缺失值处理方法
不论是自己爬虫获取的还是从公开数据源上获取的数据集,都不能保证数据集是完全准确的,难免会有一些缺失值。而以这样数据集为基础进行建模或者数据分析时,缺失值会对结果产生一定的影响,所以提前处理缺失值是十分必要的。
行哥玩Python
2020/09/17
1.6K0
推荐阅读
相关推荐
【缺失值处理】拉格朗日插值法—随机森林算法填充—sklearn填充(均值/众数/中位数)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档