错误:"ValueError: 无法将字符串转换为浮点数:''" 在pandas中

0 投票
1 回答
32 浏览
提问于 2025-04-12 18:01

大家好,我在学校需要做一个机器学习项目,目的是预测降雨量。

我的Excel表格长这样:

excell

这是我的代码:

import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics

df = pd.read_excel('Month.xlsx', usecols='W, AJ')
data = pd.read_excel('Month.xlsx')

df

x = df.iloc[:,0]
y = df.iloc[:,1]



model = LinearRegression()

model.fit(x, y)

y_pred = model.predict(x)

# Visualisatie van de regressielijn
plt.scatter(x, y,  color='gray')
plt.plot(x, y_pred, color='red', linewidth=2)
plt.xlabel('Luchtvochtigheid')
plt.ylabel('Regenval')
plt.show()

但是我一直遇到一个错误,错误信息是 "ValueError: could not convert string to float: ''。这个错误出现在我尝试运行 model.fit(x,y) 的那一行。

我试着用新代码把 x 和 y 的值转换成浮点数,比如 Xdata = float(x),但结果又出现了一个完全不同的错误:cannot convert the series to <class 'float'>

1 个回答

0

这意味着在你的数据框(df)中,有一些观察值是空字符串,比如 '',这些当然无法转换成数字。

在这种情况下,你需要决定是把它们替换成一个数字(比如零、平均值、平均值除以标准差等等),还是直接删除那些包含空字符串或 None 值的行。

在你使用机器学习算法之前,应该先进行一些数据预处理(这也是数据科学项目中比较难的部分),而你的代码中完全没有这部分。

另外,你没有把 X 和 y 分成训练集和测试集,因此你在预测时使用的是和训练时相同的数据,这样是错误的,因为模型会变得完全没用。

我建议你看看一些关于如何实施数据科学项目的文档,因为你的做法缺少很多基本的内容。

撰写回答