精华内容
下载资源
问答
  • 缺失值处理

    2018-09-19 11:49:05
    缺失值处理 之前写过一篇文章缺失值可视化处理–missingno 主要介绍了缺失值的查看,今天聊一下,出现了缺失值后我们要做的后续工作,就是缺失值的处理。 1、缺失值删除 首先附上几个代码 data数据集 data.is...

    缺失值处理

    之前写过一篇文章缺失值可视化处理–missingno
    主要介绍了缺失值的查看,今天聊一下,出现了缺失值后我们要做的后续工作,就是缺失值的处理。

    1、缺失值删除

    首先附上几个代码
    data数据集

    data.isnull()#缺失值判断:是缺失值返回True,否则范围False
    data.isnull().sum()#缺失值计算:返回每列包含的缺失值的个数
    data.dropna()#缺失值删除:直接删除含有缺失值的行
    data.dropna(axis = 1)#缺失值删除列:直接删除含有缺失值的列
    data.dropna(how = 'all')#缺失值删除行:只删除全是缺失值的行
    data.dropna(thresh = n)#缺失值删除判断:保留至少有n个缺失值的行
    data.dropna(subset = ['C'])#缺失值删除列:删除含有缺失值的特定的列
    

    2、缺失值填充

    主要针对数值型数值(Numerical Data)

    fillna()函数

    data.fillna(0):用0填充
    data.fillna(method=‘pad’):用前一个数值填充
    data.fillna(data.mean()):用该列均值填充

    Imputer

    from sklearn.preprocessing import Imputer
    imr = Imputer(missing_values='NaN', strategy='mean', axis=0)#均值填充缺失值
    imr = imr.fit(data)
    imputed_data = imr.transform(data.values)
    

    参数解释:
    填补缺失值:sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)

    主要参数说明:

    missing_values:缺失值,可以为整数或NaN(缺失值numpy.nan用字符串‘NaN’表示),默认为NaN

    strategy:替换策略,字符串,默认用均值‘mean’替换

    ①若为mean时,用特征列的均值替换
    ②若为median时,用特征列的中位数替换
    ③若为most_frequent时,用特征列的众数替换

    axis:指定轴数,默认axis=0代表列,axis=1代表行

    copy:设置为True代表不在原数据集上修改,设置为False时,就地修改,存在如下情况时,即使设置为False时,也不会就地修改

    ①X不是浮点值数组
    ②X是稀疏且missing_values=0
    ③axis=0且X为CRS矩阵
    ④axis=1且X为CSC矩阵

    statistics_属性:axis设置为0时,每个特征的填充值数组,axis=1时,报没有该属性错误

    举例:

    import numpy as np
    from sklearn.preprocessing import Imputer
    train_X = np.array([[1, 2], [np.nan, 3], [7, 6]])
    imp = Imputer(missing_values=np.nan , strategy='mean', axis=0)
    imp.fit(train_X)
    

    在这里插入图片描述
    训练集数据中,
    第一列有一个缺失值,平均值为(1+7)/2=4
    第二列无缺失值,平均值为(2+3+6)/3=3.6667
    在这里插入图片描述

    加入一个测试集:
    在这里插入图片描述
    将训练集的数据加入到测试集的缺失值中
    在这里插入图片描述

    展开全文
  • 缺失值处理python实现

    万次阅读 多人点赞 2019-02-22 14:10:29
    缺失值的处理 由于各种原因,我们使用的数据集或多或少地存在着缺失值。如果直接删除缺失值,会丢失其他有价值的数据,以下是处理缺失值的几种方法...但是如果缺失值占比上升,这种缺失值处理方法误差就很大了。 &a

    缺失值的处理

    由于各种原因,我们使用的数据集或多或少地存在着缺失值。如果直接删除缺失值,会丢失其他有价值的数据,以下是处理缺失值的几种方法。

    1. 直接删除

            当缺失值的个数只占整体很小一部分的时候,可直接删除缺失值。但是如果缺失值占比上升,这种缺失值处理方法误差就很大了。
            在采用删除法处理缺失值时,需要首先检测样本总体中缺失值的个数。python中统计缺失值的方法如下:

    import numpy as np
    import pandas as pd
    data = pd.read_csv('data.csv',encoding='GBK')
    # 将空值形式的缺失值转换成可识别的类型
    data = data.replace(' ', np.NaN)
    print(data.columns)#['id', 'label', 'a', 'b', 'c', 'd']
    #将每列中缺失值的个数统计出来
    null_all = data.isnull().sum()
    #id       0
    #label    0
    #a        7
    #b        3
    #c        3
    #d        8
    #查看a列有缺失值的数据
    a_null = data[pd.isnull(data['a'])]
    #a列缺失占比
    a_ratio = len(data[pd.isnull(data['a'])])/len(data) #0.0007
    #丢弃缺失值,将存在缺失值的行丢失
    new_drop = data.dropna(axis=0)
    print(new_drop.shape)#(9981,6)
    
    #丢弃某几列有缺失值的行
    new_drop2 = data.dropna(axis=0, subset=['a','b'])
    print(new_drop2.shape)#(9990,6)
    

           上述数据缺失值较少,可直接删除。注意,在计算缺失值时,对于缺失值不是NaN的要用replace()函数替换成NaN格式,否则pd.isnull()检测不出来。

    2.使用一个全局常量填充缺失值

           可以用一个常数('Unknow’或者负无限大)来填充缺失值。但是如果缺失值较多,都用’Unknow’来填充的话,数据挖掘程序会觉得’Unknow’是一有趣的概念。该方法很简单,但十分不可靠。python实现如下:

    #用0填充缺失值
    fill_data = data.fillna('Unknow')
    print(fill_data.isnull().sum())
    #out 
    id       0
    label    0
    a        0
    b        0
    c        0
    d        0
    

    3.均值、众数、中位数填充

           根据样本之间的相似性填补缺失值是指用这些缺失值最可能的值来填补它们,通常使用能代表变量中心趋势的值进行填补,代表变量中心趋势的指标包括平均值、中位数、众数等,那么我们采用哪些指标来填补缺失值呢?

    分布类型 填充值 原因
    近正态分布 平均值 所有观测值都较好地聚集在平均值周围
    偏态分布 中位数 偏态分布的大部分值都聚集在变量分布的一侧,中位数是更好地代表数据中心趋势的指标
    有离群点的分布 中位数 中位数是更好地代表数据中心趋势的指标
    名义变量 众数 名义变量无大小、顺序之分,不能加减乘除。如性别

    python实现如下:

    #均值填充
    data['a'] = data['a'].fillna(data['a'].mean())
    #中位数填充
    data['a'] = data['a'].fillna(data['a'].median())
    #众数填充
    data['a'] = data['a'].fillna(stats.mode(data['a'])[0][0])
    #用前一个数据进行填充
    data['a'] = data['a'].fillna(method='pad')
    #用后一个数据进行填充
    data['a'] = data['a'].fillna(method='bfill')
    

           Imputer提供了缺失数值处理的基本策略,比如使用缺失数值所在行或列的均值、中位数、众数来替代缺失值。

    from sklearn.preprocessing import Imputer
    imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
    imr = imr.fit(data.values)
    imputed_data = pd.DataFrame(imr.transform(data.values))
    print(imputed_data[0:15])
    
    参数 描述
    missing_values int或’NaN’,默认NaN(String类型)
    strategy mean,默认平均值填补;可选,median(中位数),most_frequent(众数)
    axis 指定轴向。axis=0,列向(默认);axis=1,行向
    verbose int默认值为0
    copy 默认True:创建数据集的副本;False:在任何地方都可进行插值

    4. 插值法、KNN填充

    1. 插值法
          interpolate()插值法,计算的是缺失值前一个值和后一个值的平均数。
    data['a'] = data['a'].interpolate()
    
    1. KNN填充
    from fancyimpute import KNN
    fill_knn = KNN(k=3).fit_transform(data)
    data = pd.DataFrame(fill_knn)
    print(data.head())
    #out 
           0    1    2       3         4    5
    0  111.0  0.0  2.0   360.0  4.000000  1.0
    1  112.0  1.0  9.0  1080.0  3.000000  1.0
    2  113.0  1.0  9.0  1080.0  2.000000  1.0
    3  114.0  0.0  1.0   360.0 *3.862873 *1.0
    4  115.0  0.0  1.0   270.0  5.000000  1.0
    

    5.随机森林填充

    from sklearn.ensemble import RandomForestRegressor
    #提取已有的数据特征
    process_df = data.ix[:, [1, 2, 3, 4, 5]]
    # 分成已知该特征和未知该特征两部分
    known = process_df[process_df.c.notnull()].as_matrix()
    uknown = process_df[process_df.c.isnull()].as_matrix()
    # X为特征属性值
    X = known[:, 1:3]
    # print(X[0:10])
    # Y为结果标签
    y = known[:, 0]
    print(y)
    # 训练模型
    rf = RandomForestRegressor(random_state=0, n_estimators=200, max_depth=3, n_jobs=-1)
    rf.fit(X, y)
    # 预测缺失值
    predicted = rf.predict(uknown[:, 1:3])
    print(predicted)
    #将预测值填补原缺失值
    data.loc[(data.c.isnull()), 'c'] = predicted
    print(data[0:10])
    
    展开全文
  • 缺失类型1、完全随机缺失:缺失值跟其他变量无关,例如婚姻状况的缺失2、随机缺失:缺失值依赖于其他变量,例如“配偶姓名”的缺失取决于“婚姻状况”完全非随机缺失:缺失值...连续变量缺失值处理1)对于完全随机缺失,

    缺失类型

    1、完全随机缺失:缺失值跟其他变量无关,例如婚姻状况的缺失

    2、随机缺失:缺失值依赖于其他变量,例如“配偶姓名”的缺失取决于“婚姻状况”完全非随机缺失:缺失值依赖于自己,例如高收入人群不愿易提供家庭收入处理方法

    删除有缺失值的属性或者样本(土豪行为)
    插补填充(常用于完全随机缺失且缺失度不高的情形中)
    将缺失当成一种属性值(常用于完全非随机缺失)
    连续变量缺失值的处理

    1)对于完全随机缺失,当缺失率不高时,可以:

    用常数补缺,例如均值 特别地,如果存在极端值,要考虑是否剔除极端值后再计算均值
    从非缺失值中随机抽样赋予缺失样本

    2)对于依赖于其他某变量的随机缺失,可以在同一层内,用完全随机缺失的方法进行补缺

    例如:变量“收入”取决于“工作状态”。当“工作状态”=“有工作”时,缺失的“收入”可以用所有“有工作”的持卡人的已知收入的均值代替

    3)对于完全非随机缺失,可以当成一种属性,将该变量转化成类别变量

    直接进行二值化,将该特征数据分为缺失值和非缺失值两类
    考虑给定一个step(比如age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
    类别变量缺失值的处理
    当缺失率很低时

    最常出现的类别补缺
    可以从其他已知的样本中随机抽样进行补缺

    对于类别型变量的随机抽样补缺这里需要详细讲下:
    现在我们假设有一个类别型变量X,它有三个类型的取值分别为[x1,x2,x3],我们分布计算出x1,x2,x3在X中出现频率,分别为p1,p2,p3,
    并将其频率代替为其概率。很明显p1+p2+p3=1。再计算出其累积概率,以列表形式[0,p1,p1+p2,p1+p2+p3]。每次遇到一个缺失值时,
    随机抽取一个值a~unifor(0,1),a是(0,1)之间的数, 如果a

    展开全文
  • pandas - 缺失值处理

    千次阅读 2019-03-11 17:31:59
    学习目标 说明Pandas的缺失值类型 ... 应用:对电影数据进行缺失值处理 1 电影数据文件获取 # 读取电影数据 movie = pd.read_csv("./data.csv") 2 缺失值的处理逻辑 对于NaN的数据,在pandas...

    学习目标

    • 说明Pandas的缺失值类型
    • 应用replace实现数据的替换
    • 应用dropna实现缺失值的删除
    • 应用fillna实现缺失值的填充
    • 应用isnull判断是否有缺失数据NaN
    • 应用:对电影数据进行缺失值处理

    1 电影数据文件获取

    # 读取电影数据
    movie = pd.read_csv("./data.csv")
    

    2 缺失值的处理逻辑

    对于NaN的数据,在pandas中我们处理起来非常容易

    • 判断数据是否为NaN:pd.isnull(df),pd.notnull(df)

    处理方式:

    • 存在缺失值nan,并且是np.nan:
      • 1、删除存在缺失值的:dropna(axis='rows')
      • 2、替换缺失值:fillna(df[].mean(), inplace=True)
    • 不是缺失值nan,有默认标记的

    3 存在缺失值nan,并且是np.nan

    • 删除
    # pandas删除缺失值,使用dropna的前提是,缺失值的类型必须是np.nan
    movie.dropna()
    
    • 替换缺失值
    # 替换存在缺失值的样本
    # 替换?  填充平均值,中位数
    movie['Revenue (Millions)'].fillna(movie['Revenue (Millions)'].mean(), inplace=True)
    
    movie['Metascore'].fillna(movie['Metascore'].mean(), inplace=True)
    

    4 不是缺失值nan,有默认标记的

    数据是这样的:

    wis = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data")
    

    处理思路分析:

    • 先替换‘?’为np.nan

    df.replace(to_replace=, value=)
    • 在进行缺失值的处理

    # 把一些其它值标记的缺失值,替换成np.nan
    wis = wis.replace(to_replace='?', value=np.nan)
    
    wis.dropna()
    展开全文
  • 样本缺失值处理

    千次阅读 2020-09-22 17:16:56
    样本缺失值处理 在构建模型训练时,需要对数据进行清洗,最常见的一种操作:缺失值处理。 当我们拿到一批数据的时候,往往都是“不干净”的,而缺失值是最常见也是最容易发现的。不同的缺失值处理方式对接下来的...
  • 数据清洗之 缺失值处理

    千次阅读 2020-04-19 10:26:36
    数据清洗缺失值处理
  • Python 数据处理 缺失值处理

    千次阅读 2019-08-17 19:20:09
    Python 数据处理 缺失值处理 数据来源:https://forge.educoder.net/attachments/download/376915/input.zip dataframe 缺失值处理 查看缺失值情况 train.isnull().sum().sort_values(ascending = False) 缺失值...
  • 缺失值产生的原因: 1、有些信息暂时无法获取,或者获取信息的代价...4、对数据的缺失值处理之前,进行异常值分析。   缺失值的处理,大致分为三种情况: 1、删除法 分为两种: (1)删除观测样本,na.omit()...
  • 常见的缺失值处理方式有,过滤、填充。 缺失值的判断 pandas使用浮点值NaN(Not a Number)表示浮点数和非浮点数组中的缺失值,同时python内置None值也会被当作是缺失值。 DataFrame.dropna(axis=0, how='any', ...
  • pandas 缺失值处理

    2019-04-05 09:58:02
    文章目录创建数据判断是否有缺失值及统计删除含有缺失值的行、列缺失值补充缺失值替换 创建数据 import pandas as pd import numpy as np data = pd.DataFrame({'a': [1, 2, 4, np.nan,7, 9], 'b': ['a', 'b', np....
  • 数据预处理-缺失值处理缺失值类型不完全变量完全随机缺失随机缺失完全非随机缺失缺失值补全1-均值查补2-同类均值插补3-建模预测4-高维映射5-多重插补6-手动插补 数据预处理完整目录 缺失值类型 在对缺失数据进行...
  • 缺失值处理方法

    万次阅读 2017-08-24 13:38:44
    文章将常见的自己能理解的一些缺失值处理方法以及方法的优缺点做了简单介绍。其中,多重插补、EM算法对缺失值处理尚未掌握,因此并未放上来。 一、数值缺失机制 1.完全随机缺失(MCAR):缺失数据与该变量的真实...
  • 数据缺失值处理方法

    2018-11-14 15:43:04
    机器学习缺失值处理方法 转自T_Cage
  • 缺失值处理总结

    2019-04-16 15:49:32
    在测点测数据的时候存在异常值的情况,比如测得值在量程之外,该值没有意义无法使用,归类在异常值中,作异常值处理,将该异常值删除,则问题转化为缺失值处理缺失值处理的方法有两种,一种是不处理,直接删除,一...
  • 数据预处理:缺失值处理

    千次阅读 2018-03-13 18:50:16
    对于这样的问题,有些情况下是不能直接将其抛弃的,对其进行挽救就是缺失值处理 2. 特征中的缺失值处理 (1)使用可用特征的均值来填补缺失值 (2)使用特殊值来填补缺失值,如0 (3)忽...
  • 缺失值包含的不止是字面意思那样为空的值,比如-999,-1或其他特殊字符也可能代表缺失值 隐藏的缺失值 当遇到特殊数字-1之类的情况时,我们如何确定它代表的是缺失值呢?我们可以画出特征的分布图,如果-1远离大部分...
  • sklearn中缺失值处理

    千次阅读 2015-10-13 09:51:30
    sklearn中缺失值处理基本上依赖于sklearn.preprocessing中的Imputer类 ,Imputer类有一些初始的参数,缺失类型,用什么东西代替缺失值,个人觉得配合pandas库处理缺失值会更强大 ,具体看代码,主要借鉴这大牛的...
  • R 缺失值处理

    千次阅读 2018-06-18 21:43:40
    假设有一组数据集如下:data=data.frame(y=c(1,2,3,NA,5,6),x1=c(6...#判断缺失数据is.na(data)#统计缺失值个数sum(is.na(data))#查看每个样本数据是否完整,其值与is.na()相反complete.cases(data)这里介绍处理缺失...
  • pandas:缺失值处理

    2020-12-28 17:11:51
    pandas:缺失值处理前言一、isnull()二、notnull()三、dropna()四、fillna()总结 前言 当我们在处理数据时,总会遇到数值缺失的问题,pandas在处理缺失值的方面提供了很全面的方法,主要包括:isnull()——找出缺失...
  • 决策树缺失值处理和剪枝

    万次阅读 多人点赞 2019-01-20 16:34:07
    决策树缺失值处理和剪枝缺失值处理剪枝 缺失值处理 原始数据为: 我们开始计算第一个分叉点是用哪个特征?我们对ID3算法进行修正。包含缺失值属性样本的信息增益 = p * (不包含缺失值属性样本的信息增益)。由于前面...
  • 缺失值处理: 造成数据缺失的原因是多方面的,主要可能有以下几种: 有些信息暂时无法获取,致使一部分属性值空缺出来。 有些信息因为一些人为因素而丢失了。 有些对象的某个或某些属性是不可用的。如一个未婚者的...
  • 数据缺失值处理

    千次阅读 2018-01-01 10:52:19
    数据缺失值处理方法① 删除缺失值   改变了样本原始的数据分布,在缺失值过多的情况下不宜采用② 均值填补法   若缺少的属性是数值型,则将其他数据对象该属性的值取平均后填入;若缺少的属性是非数值型,则...
  • Python数据分析:缺失值处理

    千次阅读 2020-04-25 11:05:35
    上周我们读取完了数据(Python数据分析实战:获取数据),下面就要对数据进行清洗了,首先是对缺失值处理缺失值也就是空值,先找出来再处理。 查看缺失值 可以使用isnull方法来查看空值,得到的结果是布尔值。...
  • 机器学习缺失值处理

    2017-04-06 15:57:54
    完全随机缺失:当某变量缺失值发生的可能性与其他变量无关也与该变量自身无关,例如婚姻状态的缺失 随机缺失:当某变量出现缺失值的可能性与模型中某些观测变量有关而与该变量自身无关时,例如配偶姓名的缺失取决于...
  • SPSS缺失值处理

    千次阅读 2021-02-22 18:43:47
    均值替换法: 适用于连续数据(定量数据),缺失数据占比不超过10%。 可直接生成新的数据列 ...最优的缺失值处理法。(是先求期望,然后再求极大似然估计值) 在缺失数据较多的情形,收敛的速度..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,696
精华内容 37,878
关键字:

对于缺失值的处理