精华内容
下载资源
问答
  • 空值:在pandas中的空值是”” 缺失值:在dataframe中为nan或者naT(缺失时间),在series中为none或者nan即可 3.函数具体解释 DataFrame.dropna(axis=0, how=’any’, thresh=None, subset=None, inplace=False) ...
  • Pandas空值判断

    千次阅读 2020-06-11 10:57:06
    1.浮点型float np.isnan() pd.isna() pd.isnull()/pd.notnull 2.字符串str pd.isna() pd.isnull()/pd.notnull() 3.时间datetime类型 np.isnat() ...pd.isnull/pd.notnull万能

    1.浮点型float

    np.isnan()

    pd.isna()

    pd.isnull()/pd.notnull

    2.字符串str

    pd.isna()

    pd.isnull()/pd.notnull()

    3.时间datetime类型

    np.isnat()

    pd.isnull/pd.notnull万能

    展开全文
  • (作者:陈玓玏)

    (作者:陈玓玏)

    数据处理的过程中经常会遇到空值,但是不同的语言对空值的处理好像是各有不同的,而这些处理结果会对我们的建模和统计造成很重要的影响,可能会造成各种错误,所以有必要好好研究一下。

    一、Pandas中空值的显示

    先来看两个文件的内容:
    这是文件C:/Users/cdl/Desktop/空值test.xlsx的内容

    这里写图片描述
    这是文件C:/Users/cdl/Desktop/空值test_1.xlsx的内容
    这里写图片描述
    这两个文件的内容只有一行之差,也就是test比test_1多了一行我手动输入的空格。那么我们分别获取这两个文件,会有以下区别:

    import pandas as pd
    
    arr = pd.read_excel('C:/Users/cdl/Desktop/空值test.xlsx',encoding='gbk')
    print(arr)
    print(arr.dtypes)
    
    arr = pd.read_excel('C:/Users/cdl/Desktop/空值test_1.xlsx',encoding='gbk')
    arr['strTest_1'] = arr['strTest'].apply(lambda x:str(x))
    print(arr)
    print(arr.dtypes)
    

    结果:

     numTest             timeTest strTest
    0       1  2017-08-10 00:00:00     one
    1       2  2018-08-10 00:00:00     two
    2     NaN  2019-08-10 00:00:00     NaN
    3       3                  NaN   three
    4     NaN                  NaN    four
    5                                     
    6       4  2020-08-10 00:00:00     NaN
    numTest     object
    timeTest    object
    strTest     object
    dtype: object
       numTest   timeTest strTest strTest_1
    0      1.0 2017-08-10     one       one
    1      2.0 2018-08-10     two       two
    2      NaN 2019-08-10     NaN       nan
    3      3.0        NaT   three     three
    4      NaN        NaT    four      four
    5      4.0 2020-08-10     NaN       nan
    numTest             float64
    timeTest     datetime64[ns]
    strTest              object
    strTest_1            object
    dtype: object
    

    我们来总结一下区别:
    1、不加入空格时,numTest列被读为float型,timeTest被读为datetime64型,而加入了空格后,统一解读为object型。
    2、不加入空格时,numTest和strTest中的缺失值默认为NaN,而时间则为NaT,而加了空格后,缺失值统一为NaN。
    3、在Pandas中的空值显示为NaN,而numpy中为nan,这个从strTest_1这一列和strTest的区别可以看出来。
    4、当时间识别为datetime64类型时,其格式就是输入的格式,但其识别为字符串时,格式会统一加上时分秒。
    二 、Pandas中空值的判断

    这里用到的对象是不含空格输入的DataFrame。
    判断数值型:

    print(arr[pd.isna(arr['numTest'])==True])
    print(arr[pd.isnull(arr['numTest'])==True])
    print(arr[np.isnan(arr['numTest'])==True])
    # print(arr[np.isnat(arr['numTest'])==True])  #这一句报错:TypeError: ufunc 'isnat' is only defined for datetime and timedelta.
    

    输出结果都是:

    numTest   timeTest strTest strTest_1
    2      NaN 2019-08-10     NaN       nan
    4      NaN        NaT    four      four
    

    判断时间型:

    print(arr[pd.isna(arr['timeTest'])==True])
    print(arr[pd.isnull(arr['timeTest'])==True])
    # print(arr[np.isnan(arr['timeTest'])==True])  #这一句报错:TypeError: ufunc 'isnan' not supported for the input types
    print(arr[np.isnat(arr['timeTest'])==True])
    # print(arr[arr['timeTest']==pd.NaT])  #这一句返回空的DataFrame
    

    输出结果都是:

    numTest timeTest strTest strTest_1
    3      3.0      NaT   three     three
    4      NaN      NaT    four      four
    

    判断字符串型:

    print(arr[pd.isna(arr['strTest'])==True])
    print(arr[pd.isnull(arr['strTest'])==True])
    # print(arr[np.isnan(arr['strTest'])==True])  #这一句报错:TypeError: ufunc 'isnan' not supported for the input types
    # print(arr[np.isnat(arr['strTest'])==True])  #这一句报错:TypeError: ufunc 'isnat' is only defined for datetime and timedelta
    

    输出结果:

    numTest   timeTest strTest strTest_1
    2      NaN 2019-08-10     NaN       nan
    5      4.0 2020-08-10     NaN       nan
    

    判断更改类型后的列:

    # print(arr[pd.isna(arr['strTest'])==True])  #这一句返回空的DataFrame
    # print(arr[pd.isnull(arr['strTest_1'])==True])  #这一句返回空的DataFrame
    # print(arr[np.isnan(arr['strTest_1'])==True])  #这一句报错:TypeError: ufunc 'isnan' not supported for the input types
    # print(arr[np.isnat(arr['strTest_1'])==True])  #这一句报错:TypeError: ufunc 'isnat' is only defined for datetime and timedelta
    # print(arr[arr['strTest_1']==np.nan])  #这一句返回空的DataFrame
    print(arr[arr['strTest_1']=='nan'])
    

    输出结果:

    numTest   timeTest strTest strTest_1
    2      NaN 2019-08-10     NaN       nan
    5      4.0 2020-08-10     NaN       nan
    

    通过以上的实验,我们可以知道:
    1、判断数值是否为空,可以用pd.isna,pd.isnull,np.isnan;
    2、判断字符串是否为空,可以用pd.isna,pd.isnull;
    3、判断时间是否为空,可以用pd.isna,pd.isnull,np.isnat;
    4、判断转换类型后的字符串,空值也转换成了字符串nan,所以不能用常规方法判断了,直接判断字符串是否相等即可。

    展开全文
  • pandas中对nan空值判断

    千次阅读 2020-06-30 09:46:01
    对于pandas中的空值,我们该如何判断,并且有哪些我们容易掉进去的陷阱,即不能用怎么样的方式去判断呢? 可以判断pandas中单个空值对象的方式: 1、利用pd.isnull(),pd.isna(); 2、利用np.isnan(); 3、利用is表达式...

    pandas基于numpy,所以其中的空值nan和numpy.nan是等价的。
    numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool(np.nan)去判断是否为空值,这是不对的。

    对于pandas中的空值,我们该如何判断,并且有哪些我们容易掉进去的陷阱,即不能用怎么样的方式去判断呢?

    可以判断pandas中单个空值对象的方式:

    1、利用pd.isnull(),pd.isna();

    2、利用np.isnan();

    3、利用is表达式;

    4、利用in表达式。

    不可以用来判断pandas单个空值对象的方式:

    1、不可直接用==表达式判断;

    2、不可直接用bool表达式判断;

    3、不可直接用if语句判断。

    对于同时多个空值对象的判断和处理:

    1、可以用Series对象和DataFrame对象的any()或all()方法;

    2、可以用numpy的any()或all()方法;

    3、不可以直接用python的内置函数any()和all()方法;

    4、可以用Series或DataFrame对象的dropna()方法剔除空值;

    5、可以用Series或DataFrame对象的fillna()方法填充空值。

    示例:

    import pandas as pd
    import numpy as np
    na=np.nan
    
    # 可以用来判断空值的方式
    pd.isnull(na)  # True
    pd.isna(na)  # True
    np.isnan(na)  # True
    na is np.nan  # True
    na in [np.nan]  # True
    
    # 不可以直接用来判断的方式,即以下结果和我们预期不一样
    na == np.nan  # False
    bool(na)  # True
    
    if na:
        print('na is not null')  # Output: na is not null
    
    # 不可以直接用python内置函数any和all
    any([na])  # True
    all([na])  #True
    

    总结

    1. numpy.nan是一个numpy.float64的非空对象,所以不能直接用bool表达式去判断,故一切依赖于布尔表达式的判断方式都不行,比如if语句。
    2. 对于pandas中空值的判断,我们只能通过pandas或者numpy的函数和is表达式去判断,不能用python的内置函数any或all判断。
    展开全文
  • pandas中对nan空值判断和陷阱

    万次阅读 多人点赞 2019-09-09 14:47:19
    pandas基于numpy,所以其中的空值nan和numpy.nan是等价的。numpy中的nan并不是空对象,其... 对于pandas中的空值,我们该如何判断,并且有哪些我们容易掉进去的陷阱,即不能用怎么样的方式去判断呢? 可以判断pand...

           pandas基于numpy,所以其中的空值nan和numpy.nan是等价的。numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool(np.nan)去判断是否为空值,这是不对的。

           对于pandas中的空值,我们该如何判断,并且有哪些我们容易掉进去的陷阱,即不能用怎么样的方式去判断呢?

    可以判断pandas中单个空值对象的方式:

    1、利用pd.isnull(),pd.isna();

    2、利用np.isnan();

    3、利用is表达式;

    4、利用in表达式。

    不可以用来判断pandas单个空值对象的方式:

    1、不可直接用==表达式判断;

    2、不可直接用bool表达式判断;

    3、不可直接用if语句判断。

    示例:

    import pandas as pd
    import numpy as np
    
    na=np.nan
    
    # 可以用来判断空值的方式
    pd.isnull(na)  # True
    pd.isna(na)  # True
    np.isnan(na)  # True
    na is np.nan  # True
    na in [np.nan]  # True
    
    
    # 不可以直接用来判断的方式,即以下结果和我们预期不一样
    na == np.nan  # False
    bool(na)  # True
    if na:
        print('na is not null')  # Output: na is not null
    
    
    # 不可以直接用python内置函数any和all
    any([na])  # True
    all([na])  #True
    
    

    总结

           numpy.nan是一个numpy.float64的非空对象,所以不能直接用bool表达式去判断,故一切依赖于布尔表达式的判断方式都不行,比如if语句。对于pandas中空值的判断,我们只能通过pandas或者numpy的函数和is表达式去判断,不能用python的内置函数any或all判断。

           比较奇怪的一点是pandas中空值的判断可以用is表达式判断,但是不能用==表达式判断。我们知道,对于is表达式,如果返回True,表示这两个引用指向的是同一个内存对象,即内存地址是一样的,一般同一个对象的不同引用的值也应该是相等的,所以一般is表达式为True,那么==表达式也为True。但是对于numpy.nan对象显然不是这样的,因为其可以用is表达式判断,即当is表达式为True时,但==表达式为False,这说明虽然不同numpy.nan变量引用指向的是同一个内存地址,但是其具有自己的值属性,值是不一样的,所以不能用==来判断,这点需要注意。

    展开全文
  • pandas 处理空值

    千次阅读 2018-11-30 17:53:03
    在使用pandas进行特征工程时,经常会出现空值问题,下面介绍一下pandas中的空值判断 新建一个文件:sample.csv,文件内容如下: a,b,c,d 1,,1,'1' 2,,2,'2' 3,,,'3' 4,,4, 下面通过pandas的read_csv函数 将文件...
  • Python-pandas.DataFrame-找出有空值的行

    万次阅读 多人点赞 2019-05-04 19:49:22
    pandas中DataFrame类型中,找出所有有空值的行,可以使用.isnull()方法和.any()方法。 1.找出含有空值的行 方法:DataFrame[DataFrame.isnull().T.any()] 其中,isnull()能够判断数据中元素是否为空值;T为转置...
  • 1.创建有空值的DataFrame import numpy as np import pandas as pd dates = pd.date_range("20200307", periods=4) df1 = pd.DataFrame(np.arange(12).reshape(4, 3), index=dates, columns=["A", "B", "C"]) df2 =...
  • pandas 缺失值与空值处理

    万次阅读 多人点赞 2018-07-07 10:30:49
    相关概念空值:在pandas中的空值是""缺失值:在dataframe中为nan或者naT(缺失时间),在series中为none或者nan即可3.函数具体解释DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, in...
  • 空值判断:对整个Series/Dataframe判断+对单独值判断
  • pandas中DataFrame类型中,找出所有有空值的行,可以使用.isnull()方法和.any()方法。 1.找出含有空值的行 方法:DataFrame[DataFrame.isnull().T.any()] 其中,isnull()能够判断数据中元素是否为空值;T为转置;any...
  • pandas去重和删除空值列或行

    千次阅读 2020-04-24 13:46:16
    一、删除空值 1、删除未经处理的空值数据所在的行或列 在这种情况下我们看到的空值数据通常显示的是NaN 那么这种情况就比较好处理直接调用dropna()函数 应用: order.dropna(axis=1) 删除过后的样子: 2、删除已...
  • 如何处理Pandas中的空值?今天番茄加速就来跟大家探讨一下。 只要和数据打交道,就不可能不面对一个令人头疼的问题-数据集中存在空值空值处理,是数据预处理之数据清洗的重要内容之一。 Python 数据分析包 Pandas ...
  • pandas包的一些常用处理 import pandas as pd #找到空值的索引 data['property'].isnull().counts #将空值转为定值 data['property'] = data['property'].fillna('99999') #找出空值所在索引 data[(data.property =...
  • 工作中判断df中某个值是否是空值时遇到了问题,直接使用x=="",不可行,于是百度了一下,以下文章写的很好,直接上链接了: pandas中对nan空值判断和陷阱 ...
  • 这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而pandas中Series的方法notnull()会把有空格的数据也纳入进来,这样就不能完整地得到我们想要的数据了,这里给出一个简单的方法处理该问题。...
  • pandas读取Excel判断指定列是否有空值

    千次阅读 2020-06-16 22:08:36
    有时我们用pandas读取Excel去获取某列或者某几列的值,并需要对该列的值进行处理,首先要判断该列是否有空值,若有空值不做判断可能程序会报错,比如用正则表达式去匹配该列的所有单元格的值,这时若某个单元格为...
  • Pandas主要统计特征函数 计算出前n项和: D=pd.Series(range(0,20)) D.cumsum() 0 0 1 1 2 3 3 6 .... 19 190 dtype: int64 rolling滚动计算函数 rolling_系列是pandas的函数,不是DataFr...
  • 最近发现,对于pandas中的NaN值是无法直接使用 ==np.nan来判断空值,以为在数学中,inf==inf,而nan != nan,可以通过编写代码中发现下面的情况。 >>> np.nan == np.nan False 那么我们在...
  • python pandas判断dataframe是否为空

    千次阅读 2021-03-06 22:05:53
    使用a.empty返回bool值 def get_index_code(name): index_list=pro.index_basic() index_code=index_list[index_list['name']==name] empty_dataframe=pd.DataFrame() if index_code.empty: ...
  •  但可以使用np.nan() 函数来计算nan,此时视nan为 3.pandas中的None与NaN  (1) pandas中None与np.nan都视作np.nan   (1) 判断函数: df.isnull() df.isnull.any() df.isnull.all() df.notnull() df....
  • 希望显示有空值的数据维度,或者完整的数据维度。 谁能帮帮我啊😭 <p><img alt="" height="654" src="https://img-ask.csdnimg.cn/upload/1610816710341.png" width="504" /></p>
  • 判断某列是否有NaN df['$open'].isnull().any() # 判断open这一列列是否有 NaN 判断某列是否全部为NaN df['$open'].isnull().all() # 判断open列是否全部为NaN df.isnull().all() # 判断某列是否全部...
  • pandas中DataFrame含有空值列的apply处理

    千次阅读 2019-08-16 12:56:05
    在我们处理dataframe数据时,有时候需要对含有空值列的dataframe进行apply处理。 如果这列的非空值为元组或者数值等,如下: 我们在运用apply时,可以先定义函数如下,这个过程中我们用到了pd.isnull来确定值...
  • pandas去重和填补、删除空值

    千次阅读 2019-04-15 12:42:58
    pandas去重和填补、删除空值 接着之前那个介绍pandas索引与选取的文章写的。如果有错误欢迎指出,谢谢。 总结的可能不全,后续会补充。 我是不想把相关函数的每个参数都介绍一遍,只介绍最基本的去重删除等操作。 ...
  • 创建于:20200812 修改于:20200812 文章目录1、找出所有含有空值的行2、找出含有空值的特定行和列3、代码实例4、为什么加转置5、参考链接 1、找出所有含有空值的行 DataFrame[DataFrame.is...import pandas as pd im
  • 点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤嫦娥应悔偷灵药, 碧海青天夜夜心。今天是pandas数据处理专题的第四篇...
  • 判断数据中是否有空值 统计空值/非空值数量 根据空值筛选数据 查找空值索引 删除空值 dropna()函数 填充空值fillna()函数 为了便于描述,定义本文示例数据为如下结构: df = pd.DataFrame([[1, np.nan], [np...
  • pandas数据清洗 缺失值与空值处理

    千次阅读 2020-06-21 20:11:01
    DataFrame.isna()判断该表的空值情况 DataFrame.isna().sum()汇总该表空值情况的个数 DataFrame.isna().sum().sort_values(ascending=False)按空值个数降序显示 2. 丢弃空值 DataFrame.dropna(axis=0, how=‘any’,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,118
精华内容 1,647
关键字:

pandas判断空值