如何解决ValueError:无法将字符串转换为float::'30 / 01/20' 不要使用日期列将日期转换为日期时间格式
我一直很欣赏这个错误
我一直在尝试此操作,但显示了https://colab.research.google.com/drive/1jEmsG9WWRpUmuU92URD0PxtzWkpETlY3?usp=sharing
值错误from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import datetime
df = pd.read_csv('/content/covid_19_india.csv')
df['split'] = np.random.randn(df.shape[0],1)
msk = np.random.rand(len(df)) <= 0.7
training = df[msk]
test = df[~msk]
xtrain = training.drop('Sno',axis=1)
ytrain = training.loc[:,'Sno']
xtest = test.drop('Sno',axis=1)
ytest = test.loc[:,'Sno']
model = GaussianNB()
model.fit(xtrain,ytrain)
pred = model.predict(xtest)
mat = confusion_matrix(pred,ytest)
names = np.unique(pred)
sns.heatmap(mat,square=True,annot=True,fmt='d',cbar=False,xticklabels=names,yticklabels=names)
plt.xlabel('Truth')
plt.ylabel('Predicted')
ValueError跟踪(最近一次通话最近) 在()中 31 32#训练模型 ---> 33 model.fit(xtrain,ytrain) 34 35#预测输出
6帧 /usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py asarray(a,dtype,order) 83 84“”“ ---> 85返回数组(a,dtype,copy = False,order = order) 86 87
ValueError:无法将字符串转换为float:'30 / 01/20'
任何帮助
解决方法
该错误消息指出“ 30/01/20”字符串不能为 转换为 float 。
因此,您的DataFrame似乎包含带有日期的列。
请注意,当 read_csv 读取源数据时,它将尝试转换 数字列到 int 或 float ,但其他列 (无法通过这种方式转换)保留为字符串和 这些列具有 object 数据类型。
从识别开始,哪一列包含日期。 然后,最早将此列转换为 datetime 在阅读阶段,将 parse_dates 参数传递给 read_csv , 带有要转换的列名的列表。
那么至少转换为 float 应该没有问题。
,正如在该问题的注释和其他答案中都提到的那样,您在数据集中有一列日期设置为字符串格式。您在这里有几个选择。
不要使用日期列
为了便于讨论,假设您的日期位于名为df['dates']
的列中。如果您不想使用日期列,只需删除它即可。
df.drop('date',axis=1)
将日期转换为日期时间格式
另一种选择是将该列转换为日期时间格式。可以使用apply()
和datetime.datetime.strptime
来完成。如果您是一位有抱负的数据科学家,则应阅读并为https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior添加书签。我保证,这非常方便。
from datetime import datetime
df['date'] = df['date'].apply(lambda d:datetime.strptime(d,'%m/%d/%y')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。