zoukankan      html  css  js  c++  java
  • pandas的学习4-处理丢失数据

    import pandas as pd
    import numpy as np
    
    '''
    有时候我们导入或处理数据, 会产生一些空的或者是 NaN 数据,如何删除或者是填补这些 NaN 数据就是我们今天所要提到的内容.
    建立了一个6X4的矩阵数据并且把两个位置置为空.
    '''
    dates = pd.date_range('20130101', periods=6)
    df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D'])
    df.iloc[0,1] = np.nan
    df.iloc[1,2] = np.nan
    """
                 A     B     C   D
    2013-01-01   0   NaN   2.0   3
    2013-01-02   4   5.0   NaN   7
    2013-01-03   8   9.0  10.0  11
    2013-01-04  12  13.0  14.0  15
    2013-01-05  16  17.0  18.0  19
    2013-01-06  20  21.0  22.0  23
    """
    '''
    pd.dropna() 去掉
    
    如果想直接去掉有 NaN 的行或列, 可以使用 dropna
    '''
    df.dropna(
        axis=0,     # 0: 对行进行操作; 1: 对列进行操作
        how='any'   # 'any': 只要存在 NaN 就 drop 掉; 'all': 必须全部是 NaN 才 drop
        )
    """
                 A     B     C   D
    2013-01-03   8   9.0  10.0  11
    2013-01-04  12  13.0  14.0  15
    2013-01-05  16  17.0  18.0  19
    2013-01-06  20  21.0  22.0  23
    """
    
    '''
    pd.fillna(value=)  代替
    如果是将 NaN 的值用其他值代替, 比如代替成 0:
    '''
    df.fillna(value=0)
    """
                 A     B     C   D
    2013-01-01   0   0.0   2.0   3
    2013-01-02   4   5.0   0.0   7
    2013-01-03   8   9.0  10.0  11
    2013-01-04  12  13.0  14.0  15
    2013-01-05  16  17.0  18.0  19
    2013-01-06  20  21.0  22.0  23
    """
    
    # pd.isnull()
    #
    # 判断是否有缺失数据 NaN, 为 True 表示缺失数据:
    
    df.isnull() #这个是返回一个dateframe
    """
                    A      B      C      D
    2013-01-01  False   True  False  False
    2013-01-02  False  False   True  False
    2013-01-03  False  False  False  False
    2013-01-04  False  False  False  False
    2013-01-05  False  False  False  False
    2013-01-06  False  False  False  False
    """
    
    # 检测在数据中是否存在 NaN, 如果存在就返回 True:
    #np.any()是概括
    # np.any(df.isnull()) == True   
    # True
    
    df.dropna(   
    axis=0, # 0: 对行进行操作; 1: 对列进行操作
    how='any' # 'any': 只要存在 NaN 就 drop 掉; 'all': 必须全部是 NaN 才 drop
    )

       去掉有空值的行或者列

    dateframe.fillna(value= ) 替代控制为value的值

    dateframe.isnull() 这个返回的是一个dateframe 里面的只有false,true 当存在na的时候就是true

    np.any(dateframe.isnull() )  判断这个dateframe是否有空值

    出处:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-4-pd-nan/

  • 相关阅读:
    通过SQLServer的数据库邮件来发送邮件
    sql生成数据库的序列号
    存储过程备份数据库
    LED客显的类
    坦克大战java版
    连连看java版
    贪吃蛇java版
    分享插件 javascript
    js实现上传图片及时预览
    json返回date类型转为字符串
  • 原文地址:https://www.cnblogs.com/simon-idea/p/9571614.html
Copyright © 2011-2022 走看看