所以回溯告诉你问题所在。它试图将日期解析为时间,这是您解析以下行中的数据的结果:data= np.loadtxt('daily_count.csv', delimiter=',',
dtype={'names': ('date', 'time'),'formats': ('S10', 'S10')} )
x = [DT.datetime.strptime(key,"%m-%d-%y") for (key, value) in data ]
y = [DT.datetime.strptime(key,"%h:%m") for (key, value) in data]
有多种解决方案,但问题的根源在于,当您使用loadtxt并定义名称和数据类型时,它会返回元组列表,即
^{pr2}$
所以当你在上面循环时,你实际上一直在访问日期:>>> print [key for (key, value) in data]
>>> ['04-02-15', '04-03-15', '04-04-15', '04-05-15', '04-06-15', '04-07-15']
所以您试图将'04-02-15'转换为'%h:%m'格式,这当然行不通。在
为了达到这一点,您可以使用zip函数取消对已解析数据的合并。例如print map(list, zip(*data))
['04-02-15', '04-03-15', '04-04-15', '04-05-15', '04-06-15', '04-07-15']
['11:15', '09:35', '09:10', '18:05', '10:30', '09:20']
此外,您还需要检查通过日期的格式,例如“%h:%m”将无法工作,因为%h不存在,%m表示月份。你可以在文档上找到一个很好的摘要,或者在这里:http://strftime.org/。在
或者说正题:import numpy as np
from pylab import *
import matplotlib.pyplot as plt
import datetime as DT
data= np.loadtxt('daily_count.csv', delimiter=',',
dtype={'names': ('date', 'time'),'formats': ('S10', 'S10')} )
dates, times = map(list, zip(*data))
print dates, times
x = [DT.datetime.strptime(date,"%m-%d-%y") for date in dates]
y = [DT.datetime.strptime(time,"%H:%M") for time in times]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid()
plt.plot(x,y)
plt.xlabel('Date')
plt.ylabel('Time')
plt.title('Peak Time')
plt.show()
给出了以下图表: