2016-02-10 2 views
1

У меня есть кадр данных, который имеет видпанды dataframe щелкать через расчет скорости

      variantid eventType 
date 
2016-02-08 14:43:42 variant1 served 
2016-02-08 14:43:46 variant1 served 
2016-02-08 14:43:47 variant1 served 
2016-02-08 14:43:51 variant1 served 
2016-02-08 14:43:53 variant1 served 
2016-02-08 14:43:54 variant1 served 
2016-02-08 14:43:55 variant1 served 
2016-02-08 14:43:55 variant2 served 
2016-02-08 14:43:56 variant2 served 
2016-02-08 14:43:56 variant1 served 

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

grouped_by_varid=df.groupby(by=[df.variantid,df.index.hour]).count() 

Я получаю следующее dataframe

   eventType 
variantid 
variant1 0   3 
      1   3 
      3   1 
      4   1 
      5   4 
      6   3 
      7   5 
      8   9 
      9   9 
      10   12 
      14  5846 
      15  26712 
      16  25614 
      17  19579 
      18  14328 
      19  2984 
      20   39 
      21   32 
      22   15 
      23   12 

variant2 0   3 
      1   1 
      2   4 
      3   3 
      4   8 
      5   14 
      6   24 
      7   21 
      8   27 
      9   9 
      10   9 
      14  4947 
      15  21299 
      16  19475 
      17  13292 
      18  9398 
      19  2172 
      20   66 
      21   64 
      22   44 
      23   12 

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

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

Любая помощь будет высоко оценена.

ответ

0

IIUC вы можете использовать groupby и совокупный size, reset_index и последний rename:

print df 
        variantid eventType 
date         
2016-02-08 14:43:42 variant1 served 
2016-02-08 14:43:46 variant1 served 
2016-02-08 14:43:47 variant1 served 
2016-02-08 14:43:51 variant1 served 
2016-02-08 14:43:53 variant1 served 
2016-02-08 14:43:54 variant1 served 
2016-02-08 14:43:55 variant1 served 
2016-02-08 14:43:55 variant2 served 
2016-02-08 14:43:56 variant2 served 
2016-02-08 14:43:56 variant1 served 

print df.groupby(by=[df.variantid,df.index.hour])['eventType'].size() 
           .reset_index(name='count').rename(columns={'level_1':'hours'}) 
    variantid hours count 
0 variant1  14  8 
1 variant2  14  2 

print df.groupby(by=[df.variantid,df.index.minute])['eventType'].size() 
          .reset_index(name='count').rename(columns={'level_1':'minutes'}) 
    variantid minutes count 
0 variant1  43  8 
1 variant2  43  2 
+0

Как это работает? – jezrael

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