You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制CSV数据热力图时遇ValueError:无法将'RL'转为浮点数

问题描述

尝试基于CSV数据绘制热力图时触发ValueError错误,相关代码及报错信息如下:

导入依赖代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

读取数据代码

train = pd.read_csv("Desktop/House Prices/train.csv")
train.head()

绘制热力图代码

plt.figure(figsize = (20,10))
sns.heatmap(train.corr().abs(), annot = True)

报错详情

ValueError: could not convert string to float: 'RL'


问题原因

train.corr()默认仅能计算数值型特征的相关性,你的数据集中存在字符串类型的分类特征(比如报错里的RL,大概率是土地用途类的分类值),这类非数值数据无法直接参与相关性计算,从而触发类型转换错误。

解决方法

有两种可行的处理思路:

  • 仅保留数值型特征计算
    用select_dtypes筛选出所有数值型列,再计算相关性并绘制热力图:

    # 筛选数据集里的数值型特征
    numeric_train = train.select_dtypes(include=[np.number])
    # 绘制热力图
    plt.figure(figsize=(20,10))
    sns.heatmap(numeric_train.corr().abs(), annot=True)
    plt.show()
    
  • 对分类特征编码后再计算
    如果需要将分类特征纳入相关性分析,可以通过编码把字符串转为数值。比如用LabelEncoder做标签编码:

    from sklearn.preprocessing import LabelEncoder
    
    # 复制原数据集,避免修改原始数据
    encoded_train = train.copy()
    # 遍历所有字符串类型的列进行编码
    for col in encoded_train.select_dtypes(include=['object']).columns:
        encoded_train[col] = LabelEncoder().fit_transform(encoded_train[col])
    # 绘制热力图
    plt.figure(figsize=(20,10))
    sns.heatmap(encoded_train.corr().abs(), annot=True)
    plt.show()
    

    注意:标签编码会给分类特征赋予顺序关系,如果分类本身没有顺序意义(比如颜色、户型),更推荐使用独热编码,但独热编码会增加特征维度,需根据实际需求选择。


内容的提问来源于stack exchange,提问作者Luisiño Dextre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:22:13