У меня есть данные временного ряда из регистратора данных, который ставит метки времени (в виде дат ММ - ДД-ГГ ЧЧ: ММ: СС: ххх: ггг (например, - [29.08.2018 16:26: 31.406] -) где xxx и yyy - миллисекунды и микросекунды соответственно) с точностью до микросекунд при записи данных. Теперь вы можете представить, что сгенерированный файл, записанный за несколько минут, может быть очень большим. (100 мегабайт). Мне нужно построить кучу данных из этого файла в зависимости от времени в миллисекундах (в идеале).
Данные выглядят как ниже:
Так что мне нужно проанализировать эти даты в python и вычислить timedelta, чтобы найти промежуток времени между выборками, а затем сгенерировать графики. Например, когда я вычитаю эти две метки времени (- [29.08.2018 16: 23: 41.052] - и - [29.08.2018 16: 23: 41.114] -), я хочу получить 62 миллисекунды за промежуток времени между эти две метки времени.
В настоящее время я использую 'dateparser' (при импорте dateparser как dp), который выводит datetime после синтаксического анализа, а затем я могу вычесть их, чтобы извлечь timedelta, а затем преобразовать в мс или секунды, как мне нужно.
Но эта функция занимает слишком много времени и является узким местом в моем сценарии постобработки.
Кто-нибудь может предложить лучшую библиотеку, которая более эффективна в разборе дат и вычислении timedelta?
Вот фрагмент кода, который не так эффективен
import dateparser as dp
def timedelta_local(date1, date2):
import dateparser as dp
timedelta = dp.parse(date2)-dp.parse(date1)
timediff={'us': timedelta.microseconds+timedelta.seconds*1000000+timedelta.days*24*60*60*1000000,
'ms':timedelta.microseconds/1000+timedelta.seconds*1000+timedelta.days*24*60*60*1000,
'sec': timedelta.microseconds/1000000+timedelta.seconds+timedelta.days*24*60*60,
'minutes': timedelta.microseconds/1000000/60+timedelta.seconds/60+timedelta.days*24*60
}
return timediffe
Заранее спасибо