精华内容
下载资源
问答
  • 对于缺失值,我们往往会三步走的处理,1检测缺失值,2丢弃一些缺失值,3填充一些缺失值1、isnull和notnull检测是否为空,适用于# -*- coding: utf-8 -*-import pandas as pddf = pd.read_excel('test.xlsx')print...

    有些excel文件不标准,比如空行、有些单元格没有值等,这类情况我们称为缺失值。对于缺失值,我们往往会做三步走的处理,1检测缺失值,2丢弃一些缺失值,3填充一些缺失值

    1、isnull和notnull

    检测是否为空,适用于

    # -*- coding: utf-8 -*-

    import pandas as pd

    df = pd.read_excel('test.xlsx')

    print(df)

    print('------------------')

    print(df.loc[df['分数'].notnull()])

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    1 NaN 小王 语文 NaN NaN

    2 NaN NaN 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    4 NaN NaN NaN NaN NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN NaN 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    ------------------

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    2 NaN NaN 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN NaN 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    2、dropna 删除缺失值,主要了解3个参数

    axis:0 or ‘index’, 1 or ‘columns’

    how:any有一个缺失值就drop that row or column,‘all’ 所有值是缺失值才drop that row or column.

    inpalce:bool, default False

    # -*- coding: utf-8 -*-

    import pandas as pd

    df = pd.read_excel('test.xlsx')

    print(df)

    print('------------------')

    # 删除空列

    df.dropna(axis=1,how='all',inplace=True)

    print(df)

    print('------------------')

    # 删除空行

    df.dropna(axis=0,how='all',inplace=True)

    print(df)

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    1 NaN 小王 语文 NaN NaN

    2 NaN NaN 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    4 NaN NaN NaN NaN NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN NaN 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    ------------------

    姓名 科目 分数

    0 小王 数学 87.0

    1 小王 语文 NaN

    2 NaN 英语 89.0

    3 小张 数学 95.0

    4 NaN NaN NaN

    5 小张 语文 96.0

    6 小张 英语 97.0

    7 NaN 数学 50.0

    8 小龙 语文 51.0

    9 小龙 英语 52.0

    ------------------

    姓名 科目 分数

    0 小王 数学 87.0

    1 小王 语文 NaN

    2 NaN 英语 89.0

    3 小张 数学 95.0

    5 小张 语文 96.0

    6 小张 英语 97.0

    7 NaN 数学 50.0

    8 小龙 语文 51.0

    9 小龙 英语 52.0

    3、fillna 填充缺失值,主要了解2个参数

    value:填充的值,可以是单个值,可以是字典(key为列名,value是值)

    method:等于ffill则使用前一个不为空的值填充,等于bfill使用后一个不为空的值填充

    # -*- coding: utf-8 -*-

    import pandas as pd

    df = pd.read_excel('test.xlsx')

    print(df)

    print('------------------')

    df.loc[:,'分数'] = df['分数'].fillna(100)

    """

    等价于df.fillna({'分数':100})

    """

    print(df)

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    1 NaN 小王 语文 NaN NaN

    2 NaN NaN 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    4 NaN NaN NaN NaN NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN NaN 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    ------------------

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    1 NaN 小王 语文 100.0 NaN

    2 NaN NaN 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    4 NaN NaN NaN 100.0 NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN NaN 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    # -*- coding: utf-8 -*-

    import pandas as pd

    df = pd.read_excel('test.xlsx')

    print(df)

    print('------------------')

    # index索引0到6用上面单元格的值填充

    df.loc[0:6,'姓名'] = df['姓名'].fillna(method='ffill')

    # index索引7到最后用下面单元格的值填充

    df.loc[7:,'姓名'] = df['姓名'].fillna(method='bfill')

    # 缺失的分数设为100

    df.loc[:,'分数'] = df['分数'].fillna(100)

    """

    等价于df.fillna({'分数':100})

    """

    print(df)

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    1 NaN 小王 语文 NaN NaN

    2 NaN NaN 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    4 NaN NaN NaN NaN NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN NaN 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    ------------------

    Unnamed: 0 姓名 科目 分数 性别

    0 NaN 小王 数学 87.0 NaN

    1 NaN 小王 语文 100.0 NaN

    2 NaN 小王 英语 89.0 NaN

    3 NaN 小张 数学 95.0 NaN

    4 NaN 小张 NaN 100.0 NaN

    5 NaN 小张 语文 96.0 NaN

    6 NaN 小张 英语 97.0 NaN

    7 NaN 小龙 数学 50.0 NaN

    8 NaN 小龙 语文 51.0 NaN

    9 NaN 小龙 英语 52.0 NaN

    展开全文
  • 帮助自己在机器学习项目时,面对如何处理缺失值提供思路,而只是用单一的、非最合适的方法用某个均值或中位数代替缺失值。以下内容也只是源于对以上文章的总结和记忆强化,想先用文章记录在这里。建议大家可以去...

    自己想再加深印象,总结一下。帮助自己在做机器学习项目时,面对如何处理缺失值提供思路,而不只是用单一的、非最合适的方法用某个均值或中位数代替缺失值。

    以下内容也只是源于对以上文章的总结和记忆强化,想先用文章记录在这里。建议大家可以去看原文,写的更加详细易懂。首先要明确为什么要处理缺失值?

    因为很多算法本身无法运行缺失数据,所以需要用我们主观的猜测结合科学、逻辑的方法去用一个值,添补这列的所有空值。

    有些算法可以运行缺失数据,所以无需处理缺失值,这样最好,完全保留了数据本身的样貌,不会因为我们猜的不准而让数据偏离原本的真实性。这些算法包括Xgboost、rfr等。

    但是由于我现在学到的三种算法:线性回归、逻辑回归和随机森林都需要处理掉缺失数据。要明确处理缺失数据的思路和目的!

    在数据量大、缺失数据又少的情况下,可以直接删除这些少量的几个缺失值。但是如果缺失值多,就要想办法去猜测、估计这些可能的值原本应该是多少。

    #删除空值用pandas的dropna

    import pandas

    df.dropna(how='any')算法本身无法运行缺失数据,必须处理

    缺失值不少,不能随意直接删除

    要用严谨的方法,找到最有可能的估计值,最大程度的还原数据原本的样子

    机器学习最终会用测试数据测试模型的精确度:这精确度受数据、特征和算法的影响。所以要处理出最优质的数据、广泛全面的思考与标签相关的一系列(细化)特征和用最合适的算法

    机器学习是为了预测某个数据。所以一切都围绕着提高模型的精确度。

    特征需要想的全面、细致,前提是数据本身要准确缺失值填补的n个方法

    1.用特殊的某个值去代替这列的所有空值:众数 mode

    平均数:如果数据本身没什么异常值(正态分布)均值可以反映数据整体情况,用均值代替空值

    #用fillna去填补缺失值

    df['price'].fillna(df['price'].mean())中位数:如果数据本身存在异常值,用中位数代替空值。可以用中位数和平均数都试一下,看用哪个的模型精确度高

    df['price'].fillna(df['price'].median())热卡填补

    K均值

    2. 用算法去预测缺失值特征值:其它变量 预测标签:缺失值极大似然估计

    多重插补

    3. 虚拟变量通过判断该特征变量是否有缺失值来定义一个新的二分类变量。比如该特征名为A,新增变量列名B,对A里的所有缺失值记为1,所有存在值记为0

    展开全文
  • 数据的预处理之缺失值处理

    万次阅读 2018-03-04 22:18:26
    在训练一个模型之前需要数据的预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。在实际的模型的训练样本数据中,样本...如果我们直接忽视这些缺失值可能有些算法无法处理这些缺失值,将...

    在训练一个模型之前需要做数据的预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。在实际的模型的训练样本数据中,样本可能会由于某些原因,造成一个或多个值的缺失。可能由于样本采集过程中的失误,或者度量方法对于某些特征不适用,或者数据未被填写等。在表格中缺失值通常是以空值的形式或者是NA(Not A Number)存在的。如果我们直接忽视这些缺失值可能有些算法无法处理这些缺失值,将会触发异常。如果,我们之间将包含缺失值的数据删除就会造成数据的浪费,而且有时候可能数据本来就不多,删除包含缺失值的数据之后数据就更少了,这将会影响我们训练出来模型的泛化能力。对于数据较多的情况,可以做一些删除处理。除此之外,我们还可以对缺失值进行填充,下面就介绍一些缺失数据的处理方式。


    在使用python进行数据分析处理的时候,我们可以通过第三方库pandas来进行,可以极大的简化处理步骤。

    一、查看数据缺失值的分布情况

    1.统计每列数据缺失值的分布情况
    import pandas as pd
    
    if __name__ == "__main__":
        data = pd.read_csv("data.csv")
        print(data.isnull().sum())

    2.统计每行数据缺失值的分布情况
        print(data.isnull().sum(axis=1))

    通过指定参数axis=1来实现对每行数据的缺失值进行统计,默认是axis=0表示列。


    二、删除包含缺失值的数据


    处理缺失值最简单的方法就是,将包含缺失值数据的列或者行从数据中删除,但这样会造成数据的浪费。

    1.删除包含缺失值的行
        data = pd.read_csv("data.csv")
        print(data.dropna())

    2.删除包含缺失值的列
       print(data.dropna(axis=1))

    注意:在使用dropna方法的时候,我们可以通过设置inplace=True直接修改data的值,默认是是Flase。

        data.dropna()
        print(data)

        data.dropna(inplace=True)
        print(data)

    3.根据条件删除包含缺失值的数据

    除了直接删除包含缺失值的数据之外,我们还可以通过dropna提供的一些参数来根据条件对缺失值进行删除。


    a.删除全为空值的行
        data = pd.read_csv("data.csv")
        print(data.dropna(how="all"))
    

    b.删除行的缺失值个数大于指定阈值的行
        #删除缺失值个数大于2的行
        print(data.dropna(thresh=2))
    

    c.删除指定列包含缺失值的行
        print(data.dropna(subset=["C"]))

    删除C列包含缺失值的行

    展开全文
  • 使用完整的数据集的一个基本策略就是舍弃掉整行或者整列包含缺失值的数值,但是这样处理会浪费大量有价值的数据。下面是处理缺失值的常用方法: 1.忽略元组 当缺少类别标签时通常这样(假定挖掘任务涉及分类时)...
  • 1)平均值、中值、分位数、众数、随机值等替代 2)用其他变量预测模型来算出缺失变量。...4)如果只有train中有缺失值,则使用1处理;否则,如果train和test都有很多缺失值,可以将这个作为一个bool型/0...

    1)平均值、中值、分位数、众数、随机值等替代
    2)用其他变量做预测模型来算出缺失变量。
    3)把变量映射到高维,也即是把有n个值的特征转化为一个n维特征并进行01填充;连续值特征可以离散化后再做处理。这是在n不是很大的情况下这样处理。如果n很大,可以将nan作为一个值
    4)如果只有train中有缺失值,则使用1处理;否则,如果train和test都有很多缺失值,可以将这个作为一个bool型/01二值型特征添加。
    5)缺失值很多,直接舍弃掉这一维特征。
    6)忽略:随机森林能直接处理缺失值(直接赋予缺失值的特殊值;为缺失值单独分叉)

    展开全文
  • 缺失值处理,是每个数据分析人都避开的沉重话题。正如那句经典的:“数据分析中的大部分时间,花在了数据预处理上。”数据预处理得好,往往让我们的数据分析工作事半功倍。其中,正确处理缺失值,更是重中之重。...
  • 有的时候,一些时刻或连续时间段内的值无法采集到,或者本身就没有值,本文将介绍如何处理这种情况。一般而言,有以下几种方法:对所有的...单线性插值:取某个缺失值的时间点,一条垂线相较于左右时刻的值的连...
  • 机器学习样本理想的情况下倒是需要太多处理,但是实际样本很有可能会有很多缺失值,这个时候如果不对缺失值做处理,就根本无法进行模型的训练。例子所用的测试数据来源:使用MLDataTable加载训练数据import Cocoa...
  • 1.1、缺失值处理方法: 对于直接删除的话可能导致数据集少,从而出现过拟合的现象。所以工程上常用的是均值填充。再看看方法三,其实是没啥用的,因为标签之间的关系是难以确定的。 缺失值填充   缺失值是计算模型...
  • 因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下面我对这次时间序列缺失值处理学习了以下小结以供之后同行们参考...
  • 数据清洗----重复值处理 记: 1、现实生活中,数据并非完美的,需要对所获得的完美的数据进行清洗才能进行后面的数据分析 2、数据清洗包括 处理缺失值,重复值和异常值等 3、数据清洗工作占整个数据分析项目的百分...
  • [Python数据预处理] 缺失值处理

    千次阅读 2018-06-24 22:41:00
    在训练一个模型之前需要数据的预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。 在实际的模型的训练样本数据中,样本可能...如果我们直接忽视这些缺失值可能有些算法无法处理这些缺失...
  • 最近在参加机器学习算法类的比赛,对一些知识点进行了查漏补缺和归纳总结,其实收获还挺多的,不得...缺失值处理1、观察数据是否存在缺失值1)使用pandas.isnan()判断:2)使用DataFrame.info()函数判断:2、处理缺失
  • 缺失值与噪声处理

    千次阅读 2014-03-13 11:10:45
    缺失值处理 1 忽略元组:当类标号缺少时通常这样,多个属性缺失时,不是很有效 2 人工填写缺失值:费时 3 使用一个全局常量填充缺失值:如Unknown或无穷大等替换,方法简单,但是挖掘程序可能误认为Unknown有意义 ...
  • 网上看了很多关于异常值处理缺失值填充的文章,感觉有些简单化处理了。。知道是否我自己钻牛角尖了。。 我手头有一组数据,其中数据是不同企业各自的数据记录。其中不少记录是有异常值和缺失值的。 1. 不同...
  • 为什么要处理缺失值 这一段完全是废话了。含有缺失数据的样本,你要么删了,要了就填充上什么值。删了就会损失一部分的样本信息,填充要是填充的合适,会给样本增加噪音。 所以这就是一个选择的问题: 选择删除...
  • 概述 是关于PIMA(糖尿病预测数据)的学习笔记。 数据来源 Feature Engineering Made Easy —Chapter 3 ...交叉验证就是 split test,将train再切分的技术,不做过多介绍。 本文将把网格搜索法用于KNN的参数求取。 ...
  • 理想的状态下,数据都是直接可用、规律的,但现实中的数据总会有各种问题,比如:数据缺失、格式一致、含噪声(数据中存在错误/异常)、数据一致(能相互验证)等……在数据分析的工作中,数据处理占了大...
  • 用pandas来csv的缺失值处理时候发现奇怪BUG,就是excel打开csv文件,明明有的格子没有任何东西,当然,我就想到用pandas的dropna()或者fillna()来处理缺失值。 但是pandas读取csv文件后发现那个空的地方isnull()...
  • 数据预处理--缺失值和异常值的处理

    万次阅读 2018-12-03 11:07:07
    处理缺失数据的方法   1)用平均、中值、分位数、众数、随机等替代。   如果预计该变量对于学习模型效果影响不大,可以对unknown赋众数,这里认为变量都对学习模型有较大影响,效果一般,因为等于人为增加...
  • 缺失值

    2016-10-22 16:52:21
    缺失值可分为两类:一类是这个值实际存在...如何处理缺失值是一个很复杂的课题,这里仅简要介绍,有兴趣的读者可以参阅这方面的专著(Schafer,1997;LittleandRubin,2002)。 (一)自变量的缺失值 如果某个自变
  • 为什么80%的码农都做不了架构师?>>> ...
  • 在SCI论文中,我们可避免和缺失数据打交道,特别是在回顾性研究,对于缺失的协变量(就是混杂因素),我们可以使用插补补齐数据,但是对于结局变量和原因变量的缺失,我们能这么。部分人的做法是直接删除掉这...
  • 用pandas来csv的缺失值处理时候发现奇怪BUG,就是excel打开csv文件,明明有的格子没有任何东西,当然,我就想到用pandas的dropna()或者fillna()来处理缺失值。但是pandas读取csv文件后发现那个空的地方isnull()...
  • 数据清理中,处理缺失值的方法是?

    千次阅读 2018-02-22 13:03:43
    problem数据清理中,处理缺失值的方法是?A 估算B 整例删除C 变量删除D 成对删除答案为:A B C Danalysis由于调查、编码和录入误差,数据中可能存在一些无效值和缺失值,需要给予适当的处理。常用的处理方法有:估算...
  • 有的时候数据清洗的时候 , 如果表中数据在某一天没有记录,但是业务要求能有缺失日期,那么就需要我们将这些缺失日期补上。这个前提就是我们先要有一张包含所有日期的列表(作为左表),供我们进行匹配(left ...
  • 数据有缺失是常见的问题,如果是大数据集,在缺失比例较小(如10%以下)的情况下,可以考虑直接剔除,但如果本身是个小数据集,就能轻易地删除处理。建议采用缺失值填补技术来解决。在SPSS中,有两个菜单可以完成...
  • 数据缺失处理

    2021-05-03 10:26:48
    使用完整的数据集的一个基本策略就是舍弃掉整行或者整列包含缺失值的数值,但是这样处理会浪费大量有价值的数据。下面是处理缺失值的常用方法: 1.忽略元组 当缺少类别标签时通常这样(假定挖掘任务涉及分类时)...
  •    现实中采集的原始数据一定满足预测模型的需求,往往在使用之前需要对原始数据进行处理,使得采集的原始数据满足需求,本文主要的是数据缺失处理方法。 1 加载原始数据 load('pm25data.mat')% 原始数据 ...
  • 数据清理-缺失值 数据清理例程试图填充缺失的值、光滑噪声并识别离群点、纠正数据中的一致。 缺失值处理数据时,会发现很多元组的一些属性没有记录值。可使用以下方法补充。(1) 忽略元组:当缺少类标号时...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 264
精华内容 105
关键字:

不做缺失值处理