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

Python使用SimpleImputer填充数据空值时报字符串转浮点错误如何解决

报错原因

你的数据集同时包含数值型特征(如48.0、80.0等数字)与字符串类型的分类特征(如"normal"、"notpresent"等文本值),代码中强制将全量数据转换为np.float类型时,字符串类特征无法完成类型转换,因此触发该报错。

解决方法

你需要对不同类型的特征分开处理缺失值,推荐使用pandas简化处理流程,示例代码如下:

import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer

# 加载数据,指定分隔符为分号,空字符串直接识别为缺失值NaN
df = pd.read_csv("你的数据文件路径", sep=";", header=None, na_values="")

# 拆分数值列与分类列
num_cols = df.select_dtypes(include=np.number).columns
cat_cols = df.select_dtypes(exclude=np.number).columns

# 数值列用均值填充
num_imputer = SimpleImputer(missing_values=np.nan, strategy="mean")
df[num_cols] = num_imputer.fit_transform(df[num_cols])

# 分类列用众数填充
cat_imputer = SimpleImputer(missing_values=np.nan, strategy="most_frequent")
df[cat_cols] = cat_imputer.fit_transform(df[cat_cols])

# 转换为列表格式,和原有代码输出对齐
result = df.values.tolist()

如果坚持使用纯numpy实现,提前拆分数值列和分类列的索引,分别完成填充后再拼接即可。

内容的提问来源于stack exchange,提问作者Sakura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 01:06:04