Использование Python для вывода дельты между последовательными временными метками - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть набор данных (довольно большой), проанализированный из файла журнала, который выглядит следующим образом:

{ id_1: [(1, 1554251220), (2, 1554252310), (3, 1554253199),...], id_2: [(1, 1554251220), (2, 1554252310), (3, 1554253199),...], id_3: [(1, 1554251220), (2, 1554252310), (3, 1554253199),...] ... }

Это словарь, в котором каждый ключ имеет список кортежейкак его ценность.Ключи представляют собой уникальные идентификаторы, в то время как первый элемент кортежей представляет номер версии, а второй - метку времени.

Я хочу иметь возможность найти разницу во времени между каждой последующей версией для каждого из идентификаторов, то есть разницу во времени между версией 1 и 2, а затем версией 2 и 3, а затем 3 и 4 ...

Как:

    timestamp(2) - timestamp(1) = 1554252310 - 1554251220
    timestamp(3) - timestamp(2) = 1554253199 - 1554252310
    ...
    for key in dictionary:
         for i in range(len(dictionary[key])):
               delta = dictionary[key][i][1] - dictionary[key][i+1][1]
               outlist.append(delta)

Я попытался проанализировать каждый список, для каждого идентификатора и вычислить дельты времени, но это не сработало.Будет ли лучший способ для достижения этой цели pandas?Например, здесь: Рассчитать разницу во времени между индексами данных Pandas Dataframe

Можно ли как-нибудь это сделать, не используя pandas?

Как только я получу это - чтосамый эффективный способ определения средней дельты по всем идентификаторам?

1 Ответ

0 голосов
/ 03 апреля 2019

Может быть, это может помочь:

deltas = {}
for id, stamps in dictionary.items():
     if id not in deltas:
         deltas[id] = [] 
     for i in range(len(stamps) - 1):
         deltas[id].append(stamps[i+1][1] - stamps[i][1])
print(deltas)

А для получения среднего значения дельт можно использовать statistics.mean():

from statistics import mean
for id, delta in deltas.items():
    print(id, mean(delta))
...