错误:"ValueError: 无法将字符串转换为浮点数:''" 在pandas中
大家好,我在学校需要做一个机器学习项目,目的是预测降雨量。
我的Excel表格长这样:
这是我的代码:
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 分成训练集和测试集,因此你在预测时使用的是和训练时相同的数据,这样是错误的,因为模型会变得完全没用。
我建议你看看一些关于如何实施数据科学项目的文档,因为你的做法缺少很多基本的内容。