【发布时间】:2017-12-16 16:52:17
【问题描述】:
我有这几行代码:
import numpy as np
f = open("scikit.csv")
f.readline() # skip the header
data = np.loadtxt(f, delimiter=",")
scikit.csv 的前 5 行如下所示:
Date,Time,CPUUtilization_Average,CPUUtilization_Target,NetworkIn_Average,NetworkIn_Target,NetworkOut_Average,NetworkOut_Target,MemoryUtilization_Average,MemoryUtilization_Target,Final_Target,Final_Class
2017-12-07,16:55:00,17.0,low,0.0,low,0.0,low,5.47756198097301,low,10.312904877501694,low
2017-12-07,16:56:00,11.0,low,0.0,low,0.0,low,34.1503819977678,low,22.492003834477718,low
2017-12-07,16:57:00,3.0,low,0.0,low,0.0,low,34.2944535011255,low,19.045624937577248,low
2017-12-07,16:58:00,2.0,low,0.0,low,0.0,low,34.2875445714863,low,18.601948615438673,low
我想使用sklearn 库,因为我的数据集是外部的,所以我尝试使用与this (Loading from external datasets) 指南相关的numpy。
但是当我想在 np.loadtxt("scikit.csv", delimiter=",") 中使用 numpy 将我的 CSV 转换为 Python 对象时会出错。
它会显示这个错误:
ValueError: could not convert string to float: Date
如果我像这样更改代码:
data = np.loadtxt(f, delimiter="," ,dtype="datetime64")
它将在time 列上显示另一个错误,如下所示:
ValueError: Error parsing datetime string "Date" at position 0
您能指导我如何在Date 和Time 列上解决这个问题吗?
没有强制使用numpy。
【问题讨论】:
-
跳过第一行。您试图解析标题。您试图将每个字段解析为日期时间。
-
@digitalsentinel 没有标题的相同错误
-
对吗?也许首先尝试将单个日期时间转换为 date64
-
@digitalsentinel 怎么样?
-
您在此示例数据中混合了多种数据类型(日期、字符串、浮点数)。当您指定 dtype="datetime64" 时,您正在为整个数据集转换此数据类型。还可以查看 numpy 的 genfromtxt。
标签: python csv numpy scikit-learn