如何解决含非数值列的DataFrame计算相关性报错并绘制热力图
解决Pokemon数据集相关性计算与热力图绘制报错问题
常见报错原因及修复方案
1. 未导入依赖库
你的代码用到了pandas(相关性计算)、matplotlib(画布设置)和seaborn(热力图绘制),缺失导入会直接触发报错。在代码开头添加:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
2. 未正确加载数据集到stats_df变量
代码直接使用stats_df但未定义该变量,需先读取Pokemon CSV文件:
# 加载数据集(确保文件路径正确,若在当前目录直接用文件名) stats_df = pd.read_csv("Pokemon.csv")
3. 非数值列导致相关性计算失败
corr()仅支持数值型列计算相关性,数据集里的Name、Type 1等文本列会引发错误。需先筛选数值列:
# 只保留整数/浮点类型的列 numeric_df = stats_df.select_dtypes(include=['int64', 'float64']) corr = numeric_df.corr()
4. 数据存在空值
部分缺失值会干扰相关性计算,可先处理空值:
# 用0填充空值(也可根据需求用均值/中位数填充) numeric_df = numeric_df.fillna(0) # 或直接删除含空值的行 numeric_df = numeric_df.dropna()
完整可运行代码示例
整合所有步骤的完整代码:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 加载数据集 stats_df = pd.read_csv("Pokemon.csv") # 预处理数据:筛选数值列+填充空值 numeric_df = stats_df.select_dtypes(include=['int64', 'float64']).fillna(0) # 计算相关性 corr = numeric_df.corr() # 绘制热力图(添加annot=True可显示相关系数数值) plt.figure(figsize=(9,8)) sns.heatmap(corr, annot=True, cmap='coolwarm') plt.show()
内容的提问来源于stack exchange,提问作者SH_IQ
相关产品推荐
相关产品推荐

