【问题标题】:ValueError: could not convert string to float: 'Pregnancies'ValueError:无法将字符串转换为浮点数:“怀孕”
【发布时间】: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 数据集。怀孕是第一列的名称

标签: python-3.x data-science naivebayes valueerror


【解决方案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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-23
    • 2018-06-13
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多