Pandas 中一些常用的缺失数据处理函数

1.查看缺失值

df.isnull().any():  查看哪些字段存在缺失值

df.isnull().values.sum():  检查缺失值总数

df.isnull().sum():  查看具体每个字段的缺失值个数

df.loc[df[col].isnull().values==True,:]:查看col字段存在缺失的数据

df.columns[df.isnull().any()].tolist():输出缺失字段的列表

2.删除缺失值

dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

axis:方向,默认0,按照x方向,一行一行进行判断;

how:判断依据,默认为any,任意一个为空;how,指的是全部为空;

thresh:缺失个数筛选,默认为None,即大于0就要处理;例如输入2,缺失行至少含有2个缺失列,就要进行删除,换句话说,就是某行的缺失个数>=2,就要进行处理;

subset:生效范围,默认为None,即全部列都要处理;输入一个列表,例如["a","c"],即只按照a,c列的缺失情况进行判断;

inplace:是否在原来的数据上进行处理,默认为False,即不在原来的数据上进行处理。

3.找出缺失值的数据,并说明具体哪些字段存在缺失

说明:

该函数仅用来查找相应的缺失数据,并对缺失的数据进行标注(具体缺失那些字段)

df,是指要传入的数据帧;

exclude_col,要传入一个列表,不需要进行关注的缺失数据列,默认为空列表,即全部列都需要进行考虑;

remark,生成的标注列的名称;

def get_miss(df,exclude_col=[],remark="remark"):
    """df must be a DataFrame,exclude_col type must be a list"""
    cols=list(df.columns)
    #remove unnecessary fields
    for i in exclude_col:
        cols.remove(i)
    #get a list of missing fields
    miss_col=[]
    for col in cols:
        if df[col].isnull().sum()>0:
            miss_col.append(col)
    #remark the dataframe
    miss_index=[]
    new_df=df.copy()
    new_df[remark]=""
    for i in miss_col:
        missing_index=list(df[df[i].isnull().values==True].index)
        new_df.loc[missing_index,remark]=new_df[remark]+ ";" + i 
        miss_index+=missing_index    #相当于extend
    miss_index=list(set(miss_index))
    miss_index.sort()
    #remove the begining ";"
    new_df.loc[miss_index,remark]=new_df.loc[miss_index,remark].str[1:]
    return new_df.loc[miss_index,:]

4.缺失值的填充

在pandas中,常常会使用fillna来进行填充,具体请看这篇文章,网址:python做数据分析时缺失值填补、缺失值填充方法汇总_theskylife的博客-CSDN博客_python填充缺失值

5、不进行处理

贝叶斯网络和人工神经网络,贝叶斯网络是以概率论为理论依据,以概率推理为推理基础,对于缺失值并不敏感。使用贝叶斯网络时,应具有足够的专业知识,清楚各变量之间的关联。人工神经网络可以有效对付缺失值。

你可能感兴趣的:(pandas进行数据处理,数据分析,python,人工智能)