zoukankan      html  css  js  c++  java
  • pandas 4 处理缺失数据nan

    from __future__ import print_function
    import pandas as pd
    import numpy as np
    
    np.random.seed(1)
    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                 # Nan模拟缺失的数据
    
    print(df)
    print(df.dropna(axis=0, how='all'))   # how={'any', 'all'}  全部是0才丢掉
    print(df.dropna(axis=0, how='any'))   # how={'any', 'all'}  有0就丢掉行
    print(df.fillna(value=0))             # 所有的nan用0填充
    print(pd.isnull(df))                  # 判断每一个数据是否是Nan,是nan就输出True
    print(np.any(df.isnull()) == True)    # 如果有数据缺失,就输出True
    

    以下是所有的输出结果:

    print(df)
    
    >              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
    
    print(df.dropna(axis=0, how='all'))   # how={'any', 'all'}
    
    >              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
    
    print(df.dropna(axis=0, how='any'))   # how={'any', 'all'}
    
    >              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
    
    print(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
    
    print(pd.isnull(df))
    
    >                 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
    
    print(np.any(df.isnull()) == True)
    
    > True
    

    END

  • 相关阅读:
    如何关闭内存自动释放池ARC
    你怀疑过“温水煮青蛙”的故事吗
    程序员应该加入的3个QQ群
    简述Oracle 11g 新特性
    ViewState、UpdatePanel及控件OnPre之间的纠葛
    今天,我看到一组图解释“ 什么是博士?”
    Java将何去何从
    给新手朋友 推荐几本书(从C#入门到SQL及设计模式)
    最新版 智能电脑键盘屏幕全记录 免费下载
    C#中两个问号和一个问号
  • 原文地址:https://www.cnblogs.com/yangzhaonan/p/10435864.html
Copyright © 2011-2022 走看看