TypeError:ufunc' isnan'不支持输入类型, - seaborn Heatmap

时间:2017-04-20 14:57:24

标签: python-3.x pandas seaborn

当我尝试绘制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个具有数据,其他空坐标在数据帧中表示为无

热像图可以绘制多少数据可以限制?

我不确定为什么我会收到上述错误,我已将其写入csv文件并且结果不错。

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

3 个答案:

答案 0 :(得分:0)

当您尝试用seaborn绘制图形时出现此错误,并且其中一些值不是数字。

seaborn尝试将所有数据强制转换为数字,但是有时会出现此错误。解决方案是确保您的数据中没有NaN或字符串。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在我的情况下,DataFrame没有Nan值,但数据类型为object类型。对我有用的是使用df = df.astype(float)强制数据浮动。这样就可以使用seaborn热图进行绘图了。