熊猫数据框点击率计算
Posted
技术标签:
【中文标题】熊猫数据框点击率计算【英文标题】:pandas dataframe click through rate calculation 【发布时间】:2016-05-20 04:53:20 【问题描述】:我有一个格式为
的数据框 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
s 计算每个变量的聚合统计信息。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】: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
【讨论】:
以上是关于熊猫数据框点击率计算的主要内容,如果未能解决你的问题,请参考以下文章