簡體   English   中英

熊貓數據框點擊率計算

[英]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和合計sizereset_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM