хорошо, у меня есть список дат и список продаж.Я хочу использовать 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: день выходит за пределы диапазона для месяца
теперь я знаю причину того, что даты в спискене реально, и некоторые из них на самом деле не существуют (например, 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]]
Чтобы избавиться от несуществующих датперед использованием этого в сюжете, но я все еще получаю то же сообщение об ошибке.