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:无法将字符串转换为浮点数:'Mme'

ValueError:无法将字符串转换为浮点数:'62,6'

ValueError:无法将字符串转换为浮点数:''20,99''

我收到 ValueError:无法将字符串转换为浮点数:'8,900' [重复]

ValueError:无法将字符串转换为浮点数:'31,950'