python 缺少值(NaN)检查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 缺少值(NaN)检查相关的知识,希望对你有一定的参考价值。

## check percent of nan values in pandas df
def check_nans(DATA,col_total):
    print('Shape:', DATA[col_total].shape)
    nas = [x for x in DATA[col_total].columns.values if DATA[x].isnull().sum() > 0]
    print('Cols with NAs:', len(nas))
    if len(nas)>0: 
        for x in nas: 
            print(x, ':{:.2f}% of NAs'.format(DATA[x].isnull().sum()/float(len(DATA))*100))
    return None

## check trend of holes (consecutive or not)
def check_trend_holes(DF,svar):
    import matplotlib.pyplot as plt
    import copy
    
    # copy 
    AUX = copy.deepcopy(DF[[svar]])

    # reset index
    AUX.reset_index(drop=False, inplace=True)
    AUX.reset_index(drop=False, inplace=True)

    # filtering nan values
    lindex = list(AUX[np.isnan(AUX[svar])].index)
    AUX = AUX[AUX.index.isin(lindex)]

    # check consecutive holes
    AUX.loc[(AUX['index'].shift(-1) - AUX['index'] == 1) | (AUX['index'].shift(1) - AUX['index'] == -1), 'isconsecutive'] = True

    # display results
    stitle = 'Total holes = %s / Consecutive holes = %s / Non-Consecutive holes = %s'%(len(AUX),
                                                                                    len(AUX[AUX.isconsecutive==True]),
                                                                                    len(AUX[AUX.isconsecutive!=True]))
    
    # plot                                                                     
    pd.isnull(DF[svar]).plot(figsize=(20,3))
    plt.title(stitle,fontsize=22)
    plt.xticks(rotation='horizontal', fontsize=16)
    plt.show()
    
    # clean
    del(AUX)
                                                                                       
    # return
    return None

以上是关于python 缺少值(NaN)检查的主要内容,如果未能解决你的问题,请参考以下文章

python如何检查数据框中的值是不是为nan [重复]

如何检查 NaN 值?

python 检查值是否为NaN

python中的NaN和有效性检查[重复]

数据框中现有值的 Python 条件 NaN 值替换

有效地检查 Python / numpy / pandas 中的任意对象是不是为 NaN?