[英]pandas dataframe click through rate calculation
我有一個格式的數據框
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()
我得到以下數據框
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
計算每個變量的匯總統計信息。
任何幫助將非常感激。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.