类型错误:输入类型不支持 ufunc 'isnan', - seaborn 热图



当我尝试绘制海洋热图

时,我会遇到错误

typeError:ufunc'isnan'不支持输入类型,并且根据铸件规则"安全"'

,无法将输入安全地胁迫到任何受支持的类型

我的代码如下

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_table(r"C:Results.CST", sep='s+',header=11, engine = 'python')
df2 = cridim[['Bottom','Location_X','Location_Y',]]  # Bottom , location X and Location  Y are my column labels
df3 = df2.pivot('Location_X','Location_Y','Bottom') # create pivot table for results
plt.figure(figsize=(15,15)) 
pivot_table = df3
plt.xlabel('X',size = 10) 
plt.ylabel('Y',size = 10) 
plt.title('btm CD',size = 10) 
sns.heatmap(pivot_table, annot=False, fmt=".1f", linewidths = 0.5, square = True, cmap = 'RdYlBu', vmin=2900, vmax = 3500) 
plt.show()

我的数据中由77行和77列组成,其中只有651列具有数据,其他空的坐标表示为dataframe

中的无坐标。

是否有限制海洋热图可以绘制多少数据?

我不确定为什么我会遇到上述错误,我将其写入了CSV文件,结果还不错。

此外,我尝试将值替换为" 0"和空字符串,但它仍然返回typeerror

当您试图用seaborn绘制图形时,会发生此错误,而某些值不是数字。

Seaborn试图将所有数据归因于数字,但有时会出现此错误。解决方案是您确保数据中没有NAN或字符串。

在调用Seaborn图库之前,请尝试使用df.astype(float(。确保您也没有任何NAN。

在我的情况下,dataFrame没有Nan值,但数据类型为object类型。对我有用的是使用df = df.astype(float)将数据推向浮动。然后可能使用海洋热图绘制。

要添加到 @xiaxio的答案中,如果您是通过编程方式调用此此功能并想检查数据是否为数字类型,则可以使用if not pd.to_numeric(df[some_column], errors='coerce').isna().any(): return或类似的内容。

最新更新