python判断变量是否为dataframe_关于python:如何检查Pandas DataFrame中的任何值是否为NaN...

在Python Pandas中,检查DataFrame是否具有一个(或多个)NaN值的最佳方法是什么?

我知道函数pd.isnan,但这会为每个元素返回一个布尔数据框架。 这篇文章也没有完全回答我的问题。

查看大熊猫中丢失数据计数的摘要

最新版本的pandas(v0.23.2)允许用户在没有任何调用(any().any())的情况下对两个轴执行逻辑缩减。 有关详情,请参阅此答案。

jwilner的回应是现货。我正在探索是否有更快的选择,因为根据我的经验,求平面阵列(奇怪地)比计数更快。这段代码似乎更快:

df.isnull().values.any()

例如:

In [2]: df = pd.DataFrame(np.random.randn(1000,1000))

In [3]: df[df > 0.9] = pd.np.nan

In [4]: %timeit df.isnull().any().any()

100 loops, best of 3: 14.7 ms per loop

In [5]: %timeit df.isnull().values.sum()

100 loops, best of 3: 2.15 ms per loop

In [6]: %timeit df.isnull().sum().sum()

100 loops, best of 3: 18 ms per loop

In [7]: %timeit df.isnull().values.any()

1000 loops, best of 3: 948 μs per loop

df.isnull().sum().sum()有点慢,但当然还有其他信息 - NaNs的数量。

感谢您抽出时间基准。令人惊讶的是pandas没有内置功能。从@JGreenwells的帖子中可以看出df.describe()可以做到这一点,但没有直接的功能。

我只是df.describe()(没有找到NaN s)。使用1000 x 1000阵列,单个呼叫需要1.15秒。

:1,此外,df.isnull().values.sum()比df.isnull().values.flatten().sum()快一点

啊,很好的捕获@JohnGalt - 我改变我的解决方案,删除.flatten()的postering。谢谢。

你没有尝试df.isnull().values.any(),对我来说它比其他人快。

我同意@ CK1。对我来说,df.isnull().values.any()比df.isnull().values.sum()(1.4毫秒)快两倍(0.7毫秒)

np.isnan(df.values).any()工作得快一点,但它对于对象dtype不起作用

df.shape[1] - df.dropna(axis = 1).shape[1]会快速确认在整个数据帧中有多少列具有空值

你有几个选择。

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10,6))

# Make a few areas have NaN values

df.iloc[1:3,1] = np.nan

df.iloc[5,3] = np.nan

df.iloc[7:9,5] = np.nan

现在数据框看起来像这样&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值