日期一般都有特定的格式,但尽管如此,numpy中面向浮点数的运算处理日期数据类型也很麻烦.所以numpy中给出了转换日期格式为浮点数的方法.
首先我们尝试用loadtxt读出日期数据:
In [1]: datas,close=np.loadtxt('/home/syd/Documents/data.csv',delimiter=',',usecols=(1,6),unpack=True)
------------------------------------------------------------
----> 1
...
ValueError: invalid literal for float(): 21-01-2011
我们把具体的报错省略,看到最后的错误提示可知,我们需要float浮点数而不能是日期的这种格式.
不同的格式的数据转换为浮点数,我们需要告诉numpy按照怎样的规则去转换:
def datetrs2num(s):
return datetime.datetime.strptime
(s,"%d-%m-%y").data().weekdat()
日期会被按照制定的形式提取年月日转换为datetime对象,然后被转换为date并返回weekday,星期所代表的数字,周一至周日是0-6
利用loadtxt中的converters属性进行转换:
datas,close=np.loadtxt\
('/home/syd/Documents/data.csv',delimiter=',',
usecols=(1,6),converters={1,datetrs2num},unpack=True)
最后我们尝试让他输出一个代表星期几的数字:
import numpy as np
import datetime
def datetrs2num(s):
return datetime.datetime.strptime(s,
"%d-%m-%Y").date().weekday()
datas,close=np.loadtxt\
('/home/syd/Documents/data.csv',delimiter=',',
usecols=(1,6),converters={1,datetrs2num},unpack=True)
print(datas)