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/

  • 相关阅读:
    为图片指定区域添加链接
    数值取值范围问题
    【leetcode】柱状图中最大的矩形(第二遍)
    【leetcode 33】搜索旋转排序数组(第二遍)
    【Educational Codeforces Round 81 (Rated for Div. 2) C】Obtain The String
    【Educational Codeforces Round 81 (Rated for Div. 2) B】Infinite Prefixes
    【Educational Codeforces Round 81 (Rated for Div. 2) A】Display The Number
    【Codeforces 716B】Complete the Word
    一个简陋的留言板
    HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念
  • 原文地址:https://www.cnblogs.com/simon-idea/p/9571614.html
Copyright © 2011-2022 走看看