使用Pandas读取UCI乳腺癌数据集时第7列被识别为字符串的原因
问题原因与解决方法
核心原因
你遇到的问题根源在于数据集的第7列(索引为6的列,对应特征Bare Nuclei)中包含非数值的缺失标记?。Pandas自动推断列类型时,只要列内存在非数值内容,就会将整列类型判定为字符串(object dtype),哪怕大部分值是整数。
验证方式
你可以通过查看该列的唯一值确认这一点:
print(data[6].unique())
运行后会输出包含?的数组,这就是类型被识别为字符串的关键原因。
解决办法
有两种常见的处理方式:
- 读取时直接处理:指定缺失值标记为
?,同时使用支持存储NaN的可空整数类型Int64读取该列:data = pd.read_csv('UCI/breast-cancer-wisconsin.data', header=None, na_values='?', dtype={6: 'Int64'}) - 读取后转换处理:先读取数据,再将
?替换为可空值,最后转换类型:data[6] = data[6].replace('?', pd.NA).astype('Int64')
内容的提问来源于stack exchange,提问作者user1340852
相关产品推荐
相关产品推荐

