ValueError:无法将字符串转换为浮点数:“怀孕”
Posted
技术标签:
【中文标题】ValueError:无法将字符串转换为浮点数:“怀孕”【英文标题】:ValueError: could not convert string to float: 'Pregnancies' 【发布时间】:2020-07-12 15:25:22 【问题描述】:def loadCsv(filename):
lines = csv.reader(open('diabetes.csv'))
dataset = list(lines)
for i in range(len(dataset)):
dataset[i] = [float(x) for x in dataset[i]
return dataset
您好,我正在尝试实现 Naive-Bayes,但即使我已手动将每列的类型更改为浮动,它也会给我这个错误。 它仍然给我错误。 以上是要转换的函数。
【问题讨论】:
没有关于dataset[i]
内容的任何信息,我们无法为您提供帮助。将dataset[i]
中的内容打印出来,查看是否有不能转float的项目(如字母串)
df = pd.read_csv('diabetes.csv') df.dtypes Pregnancy int64 Glucose int64 BloodPressure int64 SkinThickness int64 Insulin int64 BMI float64 DiabetesPedigreeFunction float64 Age int64 结果 int64 dtype: object
没有字符串,它只取第一列的名称并表示它不能转换为浮点数。这是 pima-diabetes 数据集。怀孕是第一列的名称
【参考方案1】:
ValueError
是因为代码试图将 CSV 标题行中的项目(即字符串)转换为浮点数。您可以跳过 CSV 文件的第一行,例如:
for i in range(1, len(dataset)): # specifying 1 here will skip the first row
dataset[i] = [float(x) for x in dataset[i]
注意:这会将dataset
中的第一项保留为标题 (str
)。
就我个人而言,我会使用pandas,它有一个read_csv()
方法,它将数据直接加载到dataframe 中。
例如:
import pandas as pd
dataset = pd.read_csv('diabetes.csv')
这会给你一个dataframe
,而不是一个列表列表。如果你真的想要一个列表列表,你可以使用dataset.values.tolist()
。
【讨论】:
以上是关于ValueError:无法将字符串转换为浮点数:“怀孕”的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:无法将字符串转换为浮点数:'2100 - 2850'
ValueError:无法将字符串转换为浮点数:'62,6'
ValueError:无法将字符串转换为浮点数:''20,99''