【发布时间】:2018-11-03 01:58:27
【问题描述】:
好的,所以我有一个日期列表,我有一个销售列表。我想使用 matplotlib 来绘制值
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
dateFormat = findDateFormat()
print dateFormat #DEBUG#
x = [dt.datetime.strptime(d,dateFormat).date() for d in listOfDates]
y = listOfSales
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter(dateFormat))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()
findDateFormat() 是我创建的一个函数,它返回一个包含格式的字符串,我测试它是好的%d/%m/%Y。当我运行脚本时出现错误
ValueError: day is out of range for month
现在我知道原因是列表中的日期不真实,有些日期实际上并不存在(例如 31,6,2016)。有没有办法解决这个问题,所以它只是忽略实际上不存在的日期?
编辑 我刚刚创建了这个函数:
def validateDates(dateFormat):
itemsToDelete = []
for i in range(0,len(listOfDates)):
try:
dt.datetime.strptime(listOfDates[i], dateFormat)
except ValueError:
print listOfDates[i] + "Has been deleted because it does not exist."
itemsToDelete.append(i)
for k in range(0,len(itemsToDelete)):
del listOfDates[itemsToDelete[k]]
del listOfSales[itemsToDelete[k]]
在情节中使用它之前删除不存在的日期,但我仍然收到相同的错误消息。
【问题讨论】:
-
你想给那些无效的日期一个默认值,或者你只是想完全忽略这些点?
-
忽略了@BurhanKhalid
标签: python python-2.7 datetime matplotlib strptime