2016-01-03 3 views
1

У меня есть задача анализа данных, в которой я хочу проанализировать журналы обслуживания в реальном времени. Не могли бы вы помочь мне, как это сделать в Пандах?Создание регулярных временных рядов из нерегулярных временных рядов в pandas

Мой первоначальный dataframe выглядеть следующим образом: enter image description here

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

Как я могу разделить этот файл данных на разные данные (индексированные по временному интервалу) для каждого имени службы путем агрегирования их соответствующих данных, как показано ниже? enter image description here

Пс: Я видел похожие вопросы, но я считаю, что мой вопрос отличается от того, что я хочу генерировать много временных рядов из фреймворка данных. И извините заранее, если это легкий один, я новичок в панд :)

Вот мой Dataframe как код:

   ERRORCODE ERRORTEXT SERVICENAME REQTDURATION RESPTDURATION HOSTDURATION 

10:00:27:000  NaN  NaN  serviceA  0    1    4612  
10:00:27:822  NaN  NaN  serviceB  0    1    14994 
10:01:27:622  -1  'Timeout' serviceA  1    0    7695  
10:01:27:323  NaN  NaN  serviceD  0    1    2612 
10:01:27:755  NaN  NaN  serviceA  0    1    1612 
10:02:27:666  -5  'Timeout' serviceA  0    1    11612 
10:02:27:111  NaN  NaN  serviceB  0    1    111112 
10:02:27:333  NaN  NaN  serviceC  0    1    412 

ответ

2

Начиная с:

    ERRORCODE ERRORTEXT SERVICENAME REQTDURATION RESPTDURATION \ 
10:00:27:000  NaN  NaN serviceA    0    1 
10:00:27:822  NaN  NaN serviceB    0    1 
10:01:27:622   -1 'Timeout' serviceA    1    0 
10:01:27:323  NaN  NaN serviceD    0    1 
10:01:27:755  NaN  NaN serviceA    0    1 
10:02:27:666   -5 'Timeout' serviceA    0    1 
10:02:27:111  NaN  NaN serviceB    0    1 
10:02:27:333  NaN  NaN serviceC    0    1 

       HOSTDURATION 
10:00:27:000   4612 
10:00:27:822   14994 
10:01:27:622   7695 
10:01:27:323   2612 
10:01:27:755   1612 
10:02:27:666   11612 
10:02:27:111  111112 
10:02:27:333   412 

Преобразование index в DateTimeIndex :

df.index = pd.to_datetime(df.index, format='%H:%M:%S:%f') 

А затем зацикливание свыше SERVICENAME группы:

for service, data in df.groupby('SERVICENAME'): 
    service_result = pd.concat([data.groupby(pd.TimeGrouper('Min')).size(), data.groupby(pd.TimeGrouper('Min'))['REQTDURATION', 'RESPTDURATION', 'HOSTDURATION'].mean()], axis=1) 
    service_result.columns = ['ERRORCOUNT', 'AVGREQTURATION', 'AVGRESPTDURATION', 'AVGHOSTDURATION'] 
    service_result.index = service_result.index.time 

Урожайность:

serviceA 

      ERRORCOUNT AVGREQTURATION AVGRESPTDURATION AVGHOSTDURATION 
10:00:00   1    0.0    1.0   4612.0 
10:01:00   2    0.5    0.5   4653.5 
10:02:00   1    0.0    1.0   11612.0 

serviceB 
      ERRORCOUNT AVGREQTURATION AVGRESPTDURATION AVGHOSTDURATION 
10:00:00   1    0     1   14994 
10:01:00   0    NaN    NaN    NaN 
10:02:00   1    0     1   111112 

serviceC 
      ERRORCOUNT AVGREQTURATION AVGRESPTDURATION AVGHOSTDURATION 
10:02:00   1    0     1    412 

serviceD 
      ERRORCOUNT AVGREQTURATION AVGRESPTDURATION AVGHOSTDURATION 
10:01:00   1    0     1    2612 
+0

, когда я запускаю это я получил следующее исключение, я упускаю что-то? ValueError: слишком много значений для распаковки – cacert

+0

, исходящих из этой строки? – Stefan

+0

в начале петли. df - это мой объект фрейма данных? он говорит, что не может перебирать фрейм данных, как я предполагаю? – cacert

Смежные вопросы