当前位置 博文首页 > pandas中NaN缺失值的处理方法

    pandas中NaN缺失值的处理方法

    作者:蓝小白1024 时间:2021-06-07 17:47

    本文主要介绍了pandas中NaN缺失值的处理方法,主要有两种方法,具体如下:

    import pandas as pd
    

    缺失值处理

    两种方法:

    • 删除含有缺失值的样本
    • 替换/插补

    处理缺失值为NaN

    先判断数据中是否存在NaN,通过下面两个方法中任意一个

    pd.isnull(dataframe)
    # dataframe为数据
    如果数据中存在NaN返回True,如果没有就返回False
    
    pd.notnull(dataframe)
    该方法与isnull相反
    
    any()  和 all()
    """
    pd.isnull(dataframe).any()
    判断哪一个字段中存在缺失值没有就返回False
    
    pd.notnull(dataframe).all()
    判断哪一个字段中存在缺失值没有就返回True
    """

    使用numpy也可以进行判断

    import numpy as np
    
    np.any(pd.isnull(dataframe)) # 如果返回True,说明数据中存在缺失值
    
    np.all(pd.notnull(dataframe)) # 如果返回False, 说明数据中存在缺失值

    然后进行数据处理

    方式一: 删除空值行

    dataframe.dropna(inplace=False)
    
    """
    dropna() 是删除空值数据的方法, 默认将只要含有NaN的整行数据删除, 
    如果想要删除整行都是空值的数据需要添加how='all'参数
    
    默认是删除整行, 如果对列做删除操作, 需要添加axis参数, 
    axis=1表示删除列, axis=0表示删除行
    
    inplace: 是否在当前的dataframe中执行此操作,
    True表示在原来的基础上修改,
    False表示返回一个新的值, 不修改原有数据
    """

    方式二: 替换/插补

    dataframe.fillna('替换的值value',inplace=False)
    '''
    把替换NaN的值传入到fillna()中
    '''
    

    缺失值NaN有默认标记的值

    比如有的空值不是NaN, 有的是一个'?'

    先替换
    使用numpy把"?"替换为NaN

    import numpy as np
    
    # 替换
    dataframe.replace(to_replace="?", value=np.nan)
    
    

    把其他的缺失值换为NaN后, 然后就按照缺失值为NaN的方式就行操作

    删除数据

    如果只是单独的删除数据可以使用drop()方法

    DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
    
    '''
    代码解释:
    labels : 就是要删除的行列的名字,用列表指定
    index : 直接指定要删除的行
    columns : 直接指定要删除的列
    inplace=False : 表示返回一个新的值, 不修改原有数据
    inplace=True : 表示在原来的基础上修改
    '''
    
    

    例:

    import pandas as pd
    df = pd.read_csv('/text.xlsx')
    # 删除第0行和第1行
    df.drop(labels=[0,1],axis=0)
    
    # 删除列名为 age 的列
    df.drop(axis=1,columns=age)
    
    js
    下一篇:没有了