Как рассчитать среднюю разницу во времени в питоне? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть несколько раз в виде строки:

"2018-12-14 11:20:16","2018-12-14 11:14:01","2018-12-14 11:01:58","2018-12-14 10:54:21"

Я хочу вычислить среднюю разницу во времени между всеми этими временами.Приведенный выше пример будет выглядеть следующим образом:

2018-12-14 11:20:16 - 2018-12-14 11:14:01 = 6 minutes 15 seconds
2018-12-14 11:14:01 - 2018-12-14 11:01:58 = 12 minutes 3 seconds
2018-12-14 11:14:01 - 2018-12-14 11:01:58 = 7 minutes 37 seconds

(375 с + 723 с + 457 с) / 3 = 518,3 секунды = 8 минут 38,33 секунды (если моя рука в математике верна).

У меня есть все строки данных в массиве.Я предполагаю, что это легко преобразовать в метку времени, циклически по нему, чтобы вычислить различия, а затем среднее?Я только начал изучать Python, и это первая программа, которую я хочу сделать для себя.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018
from datetime import datetime
import numpy as np

ts_list = ["2018-12-14 11:20:16","2018-12-14 11:14:01","2018-12-14 11:01:58","2018-12-14 10:54:21"]
dif_list = []
for i in range(len(ts_list)-1):
    dif_list.append((datetime.strptime(ts_list[i], '%Y-%m-%d %H:%M:%S')-datetime.strptime(ts_list[i+1], '%Y-%m-%d %H:%M:%S' )).total_seconds())
avg = np.mean(dif_list)
print(avg)

результат 518,3333333333334 секунд.

0 голосов
/ 14 декабря 2018

У вас куча проблем.Я не собираюсь давать вам решения по всем этим.Просто подсказки, чтобы вы начали.

Полагаю, вы знаете ...

  • ... как преобразовать строку времени в объект datetime.datetime,
  • ... как вычислить разницу между двумя, т. е. datetime.timedelta,
  • ... как вычислить среднее значение (datetime.timedelta поддерживает как сложение, так и деление на int или float).

Таким образом, единственным сложным шагом в этой задаче будет, как рассчитать различия между смежными элементами в списке.Я собираюсь показать вам это.

Когда у вас есть список элементов, вы можете slice и zip , чтобы создать итератор для итерации пар смежныхэлементы в списке.

Например, попробуйте это (непроверенный код):

l = range(10)
for i,j in zip(l, l[1:]):
    print(i, j)

Затем создайте список, содержащий различия, например, используя понимание списка :

deltas = [i-j for i,j in zip(l, l[1:])]

Теперь вычислите свое среднее значение и все готово.

Для справки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...