精华内容
下载资源
问答
  • Python Pandas缺失值处理
    千次阅读
    2022-04-19 12:35:08

    Python Pandas缺失值处理

    在一些数据分析业务中,数据缺失是我们经常遇见的问题,缺失值会导致数据质量的下降,从而影响模型预测的准确性,这对于机器学习和数据挖掘影响尤为严重。因此妥善的处理缺失值能够使模型预测更为准确和有效。

    为什么会存在缺失值?

    前面章节的示例中,我们遇到过很多 NaN 值,关于缺失值您可能会有很多疑问,数据为什么会丢失数据呢,又是从什么时候丢失的呢?通过下面场景,您会得到答案。

    其实在很多时候,人们往往不愿意过多透露自己的信息。假如您正在对用户的产品体验做调查,在这个过程中您会发现,一些用户很乐意分享自己使用产品的体验,但他是不愿意透露自己的姓名和联系方式;还有一些用户愿意分享他们使用产品的全部经过,包括自己的姓名和联系方式。因此,总有一些数据会因为某些不可抗力的因素丢失,这种情况在现实生活中会经常遇到。

    什么是稀疏数据?

    稀疏数据,指的是在数据库或者数据集中存在大量缺失数据或者空值,我们把这样的数据集称为稀疏数据集。稀疏数据不是无效数据,只不过是信息不全而已,只要通过适当的方法就可以“变废为宝”。

    稀疏数据的来源与产生原因有很多种,大致归为以下几种:

    由于调查不当产生的稀疏数据;

    由于天然限制产生的稀疏数据;

    文本挖掘中产生的稀疏数据。

    缺失值处理

    那么 Pandas 是如何处理缺失值的呢,下面让我们一起看一下。

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'])
    df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
    print(df)
    

    输出结果:

              0         1         2
    a  0.187208 -0.951407  0.316340
    b       NaN       NaN       NaN
    c -0.365741 -1.983977 -1.052170
    d       NaN       NaN       NaN
    e -1.024180  1.550515  0.317156
    f -0.799921 -0.686590  1.383229
    g       NaN       NaN       NaN
    h -0.207958  0.426733 -0.325951
    

    上述示例,通过使用 reindex(重构索引),我们创建了一个存在缺少值的 DataFrame 对象。

    检查缺失值

    为了使检测缺失值变得更容易,Pandas 提供了 isnull() 和 notnull() 两个函数,它们同时适用于 Series 和 DataFrame 对象。

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'])
    df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
    print(df['noe'].isnull())
    

    输出结果:

    a    False
    b     True
    c    False
    d     True
    e    False
    f    False
    g     True
    h    False
    Name: 1, dtype: bool
    

    notnull() 函数,使用示例:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'])
    df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
    print df['one'].notnull()
    

    输出结果:

    a     True
    b    False
    c     True
    d    False
    e     True
    f     True
    g    False
    h     True
    Name: 1, dtype: bool
    

    缺失数据计算

    计算缺失数据时,需要注意两点:首先数据求和时,将 NA 值视为 0 ,其次,如果要计算的数据为 NA,那么结果就是 NA。示例如下:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])
    df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
    print (df['one'].sum())
    print()
    

    输出结果:

    3.4516595395128
    

    清理并填充缺失值

    Pandas 提供了多种方法来清除缺失值。fillna() 函数可以实现用非空数据“填充”NaN 值。

    1) 用标量值替换NaN值

    下列程序将 NaN 值 替换为了 0,如下所示:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],columns=['one',
    'two', 'three'])
    df = df.reindex(['a', 'b', 'c'])
    print(df)
    #用 0 填充 NaN
    print (df.fillna(0))
    

    输出结果:

         one       two     three
    a  1.497185 -0.703897 -0.050513
    b       NaN       NaN       NaN
    c  2.008315  1.342690 -0.255855
    
            one       two     three
    a  1.497185 -0.703897 -0.050513
    b  0.000000  0.000000  0.000000
    c  2.008315  1.342690 -0.255855
    

    当然根据您自己的需求,您也可以用其他值进行填充。

    2) 向前和向后填充NA

    在前一节,我们介绍了 ffill() 向前填充和 bfill() 向后填充,使用这两个函数也可以处理 NA 值。示例如下:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])
    df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
    print df.fillna(method='ffill')
    

    输出结果:

            one       two     three
    a  0.871741  0.311057  0.091005
    b  0.871741  0.311057  0.091005
    c  0.107345 -0.662864  0.826716
    d  0.107345 -0.662864  0.826716
    e  1.630221  0.482504 -0.728767
    f  1.283206 -0.145178  0.109155
    g  1.283206 -0.145178  0.109155
    h  0.222176  0.886768  0.347820
    

    或者您也可以采用向后填充的方法。

    3) 使用replace替换通用值

    在某些情况下,您需要使用 replace() 将 DataFrame 中的通用值替换成特定值,这和使用 fillna() 函数替换 NaN 值是类似的。示例如下:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame({'one':[10,20,30,40,50,666], 'two':[99,0,30,40,50,60]})
    #使用replace()方法
    print (df.replace({99:10,666:60,0:20}))
    

    输出结果:

       one  two
    0   10   10
    1   20   20
    2   30   30
    3   40   40
    4   50   50
    5   60   60
    

    删除缺失值

    如果想删除缺失值,那么使用 dropna() 函数与参数 axis 可以实现。在默认情况下,按照 axis=0 来按行处理,这意味着如果某一行中存在 NaN 值将会删除整行数据。示例如下:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],columns=['one', 'two', 'three'])
    df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
    print(df)
    #删除缺失值
    print (df.dropna())
    

    输出结果:

            one       two     three
    a -2.025435  0.617616  0.862096
    b       NaN       NaN       NaN
    c -1.710705  1.780539 -2.313227
    d       NaN       NaN       NaN
    e -2.347188 -0.498857 -1.070605
    f -0.159588  1.205773 -0.046752
    g       NaN       NaN       NaN
    h -0.549372 -1.740350  0.444356
    
            one       two     three
    a -2.025435  0.617616  0.862096
    c -1.710705  1.780539 -2.313227
    e -2.347188 -0.498857 -1.070605
    f -0.159588  1.205773 -0.046752
    h -0.549372 -1.740350  0.444356
    

    axis = 1 表示按列处理,处理结果是一个空的 DataFrame 对象。

    更多相关内容
  • 决策树缺失值处理

    2021-01-07 03:12:39
    1.决策树缺失值处理 1.1对于训练模型,训练数据部分样本的部分特征值缺失的情况下,做法是:把该数据按比例分成三份数据。可以算出该特征的信息增益。 1.2对于预测数据,C4.5中采用的方法是:测试样本在该属性值上有...
  • 但是如果缺失值占比比较大,这种直接删除缺失值处理方法就会丢失重要信息。 直接删除法处理缺失值时,需要检测样本总体中缺失值的个数。Python中统计缺失值的方法如下(下面结合具体数据集,直接上代码): import...
  • 缺失值处理 缺失值首先需要根据实际情况定义 可以采取直接删除法 有时候需要使用替换法或者插值法 常用的替换法有均值替换、前向、后向替换和常数替换 import pandas as pd import numpy as np import os os.getcwd...
  • 本文介绍通过拉格朗日插值法进行缺失值的填充: 先用一组简单的数据看一下拉格朗日插值法 from scipy.interpolate import lagrange import matplotlib.pyplot as plt import numpy as np %matplotlib inline plt....
  • 缺失值按na处理.wf1

    2020-12-10 21:34:42
    该Eviews文件对应我的博客(平衡面板数据中的缺失值可以存在吗?https://blog.csdn.net/zhouxiaojieaaa/article/details/110999819)
  • 5、将姓名的缺失值进行填充 6、将清洗好的数据保存到指定excel中 原始数据: 最后输出数据: 处理步骤: 1、读取数据: 2、删除全是空值的列 3、删除全是空值的行 4、将分数列值为NAN(空值)的填充为0分 5、...
  • 主要介绍了python 缺失值处理的方法(Imputation),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 今天小编就为大家分享一篇python实现数据清洗(缺失值与异常值处理),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 因近期进行时间序列分析时遇到了数据预处理中的缺失值处理问题,其中日期缺失和填充在网上没有找到较好较全资料,耗费了我一晚上工作时间,所以下面我对这次时间序列缺失值处理学习了以下小结以供之后同行们参考...
  • 缺失值按0处理.wf1

    2020-12-10 21:36:05
    该Eviews文件对应我的博客-(平衡面板数据中的缺失值可以存在吗?https://www.jianshu.com/p/39d2f529237b)
  • 主要给大家介绍了关于Python Pandas对缺失值处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Python Pandas具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • R语言处理缺失值

    2021-01-07 04:27:01
    处理数据过程中,避免了会产生一些缺失值,如未填写数据或者编码错误等原因,用NA表示缺失值。在R语言中,is.na()函数可以判断元素是否是缺失值,从而返回逻辑值(TRUE/FALSE),所以该函数将会返回和元数据集一样...
  • 缺失值处理

    2019-09-13 15:58:26
    入门级基础知识,本人学习整理笔记,对小白很友好,有兴趣的学习的朋友可以查阅。
  • 通过Long Short-Term Memory长短期记忆网络处理时间序列缺失值问题。
  • 数学建模时对数据进行预处理,用移动平均法对缺失值进行填充
  • 首先是缺失值处理。 #读取数据 import pandas as pd filepath= 'F:/...'#本地文件目录 df= pd.read_csv(train,sep=',')#df数据格式为DataFrame 查看缺失值 查看每一特征是否缺失及缺失值数量可能影响着处理缺失值的...
  • 今天小编就为大家分享一篇pandas中read_csv的缺失值处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 当数据中存在缺失值时:比较科学的方法是插值填补的方法,代码思路:从excel中导入数据,然后用matalab插值拟合,最终输入直接在excel表中修改。炒鸡简单实用 快捷,当然你也可以导入数据库文件,看个人需求!!...
  • 今天小编就为大家分享一篇python 检查数据中是否有缺失值,删除缺失值的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 对于数值型数据,分为缺失值(NAN)和非缺失值,对于缺失值的检测,可以通过Python中pandas库的Series类对象的isnull方法进行检测。 import pandas as pd import numpy as np string_data = pd.Series(['Benzema',...
  • 移动窗口填补时间序列缺失值(imputeTS的matlab版本),包括简单移动平均值的简单缺失值插补; 线性加权移动平均值的线性缺失值插补; 指数加权移动平均值的指数缺失值插补
  • pandas 缺失值处理.md

    2019-09-01 15:05:12
    主要介绍缺失值的定义、产生与处理,对缺失值做处理时的一些影响
  • 缺失值(missing data)又叫完整数据,其发生的原因主要分为两类,一类是个人填写疏忽、题意不明漏答、拒绝作答等内部因素,另一种是数据输入所造成的失误等外部因素。 缺失值最大的影响在于造成样本的流失,同时...
  • 03.数据预处理——缺失值处理.ipynb

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,773
精华内容 45,109
关键字:

不做缺失值处理