У меня есть список datetime
объектов, которые созданы таким образом:
from datetime import datetime
import pytz
_year = 2018
_month = 2
_day = 3
_hour = 14
_minute = 30
csv_timezone = pytz.timezone('Europe/Berlin')
csv_dt = datetime(_year, _month, _day, _hour, _minute)
print('csv_dt')
print(csv_dt)
, которые позже я хочу использовать в UTC для Matplotlib:
utc_dt = csv_timezone.localize(csv_dt).astimezone(pytz.utc)
print('utc_dt')
print(utc_dt)
Результатследующим образом:
csv_dt
2018-02-03 14:30:00
utc_dt
2018-02-03 13:30:00+00:00
Как уже говорилось ранее, я хочу использовать эти объекты в Matplotlib.Который, согласно документации, ожидает следующий объект datetime:
Форматирование даты Обычно в программах Python даты представляются в виде объектов datetime, поэтому сначала нужно преобразовать другие значения данных в объекты datetime, иногдас помощью сопутствующего модуля dateutil, например:
импорт datetime
date = datetime.datetime (2009, 03, 28, 11, 34, 59, 12345)
или
import dateutil.parser
datestrings = ['2008-07-18 14: 36: 53.494013', '2008-07-2014: 37: 01.508990', '2008-07-28 14: 49: 26.183256 ']
date = [dateutil.parser.parse (s) для s в строках даты]
Когда у нас есть объекты datetime, чтобы позволить Matplotlib использовать их, мы должны преобразовать их в числа с плавающей точкой, которые представляют количество дней с 0001-01-01 00:00:00 UTC.
Для этого сам Matplotlib предоставляет несколько вспомогательных функций, содержащихся в matplotlib.модуль дат:
• date2num (): эта функцияпреобразует один или последовательность объектов datetime в значения с плавающей точкой, представляющие дни с 0001-01-01 00:00:00 UTC (дробные части представляют часы, минуты и секунды)
(выдержка из Matplotlib для разработчиков на PythonСандро Тоси, под ред.PACKT PUBLISHING 2009. Page 95)
Поэтому я не понимаю, почему функция datetime
object date2num
ожидает следующую форму:
2008-07-20 14:37:01.508990
В то время как одинЯ генерирую имеет следующую форму:
2018-02-03 13:30:00+00:00
Я получаю ошибку:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-7d0a84cb48da> in <module>
20
21 # Convert to matplotlib required
---> 22 mpl_times = mpl.dates.date2num(times)
23
24 plt.figure()
times
это:
<class 'numpy.ndarray'>
times
['2018-01-12 07:00:00+01:00', '2018-01-12 07:01:00+01:00', '2018-01-12 07:02:00+01:00' ..... ]
КакМогу ли я конвертировать из моего формата в формат, ожидаемый date2num
?