美文网首页
pandas 处理缺失值[dropna、drop、fillna]

pandas 处理缺失值[dropna、drop、fillna]

作者: 一本正经胡说八道的猫 | 来源:发表于2022-03-26 16:21 被阅读0次

    一本正经胡说八道的猫


    面对缺失值三种处理方法:
    参考原文链接

    option 1: 去掉含有缺失值的样本(行)
    option 2:将含有缺失值的列(特征向量)去掉
    option 3:将缺失值用某些值填充(0,平均值,中值等)
    对于dropna和fillna,dataframe和series都有,在这主要讲datafame的

    方法一:dropna()其他参数解析

    dropna()方法的其他参数。

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

    参数说明:

    • axis:

    • axis=0: 删除包含缺失值的行

    • axis=1: 删除包含缺失值的列

    • how: 与axis配合使用

    • how=‘any’ :只要有缺失值出现,就删除该行货列

    • how=‘all’: 所有的值都缺失,才删除行或列

    • thresh: axis中至少有thresh个非缺失值,否则删除。比如 axis=0,thresh=10:标识如果该行中非缺失值的数量小于10,将删除改行

    • subset: list,在哪些列中查看是否有缺失值

    • inplace: 是否在原数据上操作。如果为真,返回None否则返回新的copy,去掉了缺失值

    df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                       [3, 4, np.nan, 1],
                       [np.nan, np.nan,2.5,  5],
                       [np.nan, 3, np.nan, 4]],
                       columns=list('ABCD'))
    df
    
        A   B   C   D
    0   NaN 2.0 NaN 0
    1   3.0 4.0 NaN 1
    2   NaN NaN 2.5 5
    3   NaN 3.0 NaN 4
    
    df.dropna(axis=0,subset=['C']) #axis=0,删除行,subset的列选择
    
        A   B   C   D
    2   NaN NaN 2.5 5
    
    

    方法二:替换并删除,Python pandas 如果某列值为空,过滤删除所在行数据
    如上面的df数据,这个时候的思路是:

    fillna()给空值填充一个数值(如999999)
    index.tolist()找出值为填充值所在行的索引
    drop根据索引干掉对应的行

    df['A']=df['A'].fillna(999999)
    find_index=df[(df.A==999999)].index.tolist()
    find_index
    [0, 2, 3]
    
         d    e    f
    a  1.0  6.5  3.0
    d  6.5  3.0  NaN
    
    
    df.drop(find_index)
        A   B   C   D
    1   3.0 4.0 NaN 1
    

    相关文章

      网友评论

          本文标题:pandas 处理缺失值[dropna、drop、fillna]

          本文链接:https://www.haomeiwen.com/subject/rpzrjrtx.html