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
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
要找出特定列中哪些行具有nan,请执行以下操作:
你有两个选择。
现在,数据帧如下所示:
df.isnull().any().any()
-返回布尔值您知道
isnull()
将返回如下数据帧:如果您将其设为
df.isnull().any()
,您可以只找到具有NaN
值的列:再来一个
.any()
将告诉您上面是否有True
df.isnull().sum().sum()
-返回NaN
值总数的整数:这与
.any().any()
的操作方式相同,首先给出列中NaN
个值的总和,然后是这些值的总和:最后,要获取数据帧中NaN值的总数:
jwilner的响应是spot-on。我在探索是否有一个更快的选择,因为根据我的经验,对平面阵列求和(奇怪地)比计数快。此代码似乎更快:
例如:
df.isnull().sum().sum()
有点慢,但当然,还有额外的信息——数字NaNs
。相关问题 更多 >
编程相关推荐