在检查数据集中的 NaN 输入时,'isnan'不支持输入类型 ufunc



我正在尝试做一些简单的事情,比如在巨量数据集中检查python中的NaN值(我知道它们在"年龄"列中,所以这更需要练习(。

当使用np.isnan时,我得到:类型错误:输入类型不支持ufunc"isnan",并且根据强制转换规则"safe",无法将输入安全地强制为任何支持的类型

ds = sn.load_dataset("titanic")
for i in range(0,len(ds.index)):
for j in range(0, len(ds.columns)):
# Check if cell is NaN
if np.isnan(ds.iloc[i][j]):
print("it works, yay")

为什么不起作用?

根据numpy.isnanufunc文档和numpy.can_cast的文档;您当前面临的问题是由于CCD_;int""浮动";。我建议你使用pd.isna,它正在返回所需的结果:

count = 0
ds = sns.load_dataset("titanic")
for i in range(0,len(ds.index)):
for j in range(0, len(ds.columns)):
# Check if cell is NaN
if pd.isna(ds.iloc[i][j]):
count+=1
print(count)

在这里,我用一个计数器替换了print以检查NaN值,它返回869,这与数据集中的值一致。

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 15 columns):
#   Column       Non-Null Count  Dtype   
---  ------       --------------  -----   
0   survived     891 non-null    int64   
1   pclass       891 non-null    int64   
2   sex          891 non-null    object  
3   age          714 non-null    float64 
4   sibsp        891 non-null    int64   
5   parch        891 non-null    int64   
6   fare         891 non-null    float64 
7   embarked     889 non-null    object  
8   class        891 non-null    category
9   who          891 non-null    object  
10  adult_male   891 non-null    bool    
11  deck         203 non-null    category
12  embark_town  889 non-null    object  
13  alive        891 non-null    object  
14  alone        891 non-null    bool    
dtypes: bool(2), category(2), float64(2), int64(4), object(5)
memory usage: 80.7+ KB

相关内容

最新更新