• python数据分析pandas中的DataFrame数据清洗


    pandas中的DataFrame中的空数据处理方法:

    方法一:直接删除

    1.查看行或列是否有空格(以下的df为DataFrame类型,axis=0,代表列,axis=1代表行,以下的返回值都是行或列索引加上布尔值)
    isnull方法
    查看行:df.isnull().any(axis=1)  
    查看列:df.isnull().any(axis=0)
    notnull方法:
    查看行:df.notnull().all(axis=1)
    查看列:df.notnull().all(axis=0)
    例子:
    df.isnull().any(axis=1) # 检测行内是否有空值
    0     False
    1     True
    2   False
    3     True
    4   False
    5     True
    6   False
    7     True
    8   False
    9   False
    dtype: bool
    注意点:以上方法都可以用~取反的办法获取相反的结果
    2.在1的前提下使用df.loc[],可取出1中筛选出数据的具体数据如:
    df.loc[df.isnull().any(axis=1)]
    取出这几行的索引可用属性index如:df.loc[df.isnull().any(axis=1)].index
    得到这些索引后可以使用drop方法进行删除如:
    注意:drop方法中的axis值与其他方法相反,axis=0表示行,=1表示列。
    df.drop(labels=drop_index, axis=0)

    总结下来为4步:
    一.使用isnull或notnull筛选:df.isnull().any(axis=0)
    二.使用loc取出具体数据:df.loc[df.isnull().any(axis=1)]
    三:取出这些数据的索引:df.loc[df.isnull().any(axis=1)].index
    四.使用drop删除:df.drop(labels=drop_index, axis=0)
     

    方法二:填充空值

    步骤和方法一前几步相同
    isnull()
    notnull()
    dropna(): 过滤丢失数据(df.dropna() 可以选择过滤的是行还是列(默认为行):axis中0表示行,1表示的列)
    fillna(): 填充丢失数据(可以选择自主添加数据,或者用表中原有的数据进行补充)

    1.使用dropna(不常用):df.dropna(axis=0)
    2.使用fillna(常用):
    一.df.fillna(value=666)给所有的控制赋值为666
    二.df.fillna(method='ffill', axis=0) # axis=0表示在垂直方向填充(axis值:0为垂直,1为水平),使用上方的值对空值进行填充,组合起来就是,使用垂直方向上方的值对当前位置的值进行填充
    三.df.fillna(method='bfill', axis=1) # axis=1表示在水平方向填充(axis值为0垂直1为水平),bfill表示使用后面的值对空值进行填充,组合起来就是,使用水平方向右边的值对当前位置的值进行填充
    总结:ffill(前)和bfill(后)决定前或后,axis决定垂直或水平
  • 相关阅读:
    Spring整合MyBatis (使用扫描包配置mapper代理)
    spring扫描配置文件
    文件上传解析器
    Jackson介绍(1)-jackson2.x与Jackson1.9的比较
    SpringMVC中使用RedirectAttributes重定向传参,防止暴露参数
    Spring中Model,ModelMap以及ModelAndView之间的区别
    浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
    Vagrant 创建虚拟环境
    centos安装VirtualBox增强包VBoxGuestAdditions
    Vagrant 命令详解
  • 原文地址:https://www.cnblogs.com/caiwenjun/p/11778378.html
Copyright © 2020-2023  润新知