【发布时间】:2014-01-26 00:09:01
【问题描述】:
我的问题很笼统,可能可以通过多种方式解决。但是考虑到时间和内存的聪明方法是什么?
我有以下形式的用户交互时间序列数据:
cookie_id interaction
--------- -----------
1234 did_something
1234 viewed_banner*
1234 did_something
1234 did_something
1234 viewed_and_clicked_banner*
... ...
我希望它训练模型来预测用户是否会在横幅显示时点击横幅(即标有 * 的交互)。为此,我需要在提要中出现兴趣点(viewed_banner 或 viewed_and clicked_banner)时汇总所有之前的交互:
cookie_id interaction
--------- -----------
1234 did_something
1234 viewed_banner <- point of interest
cookie_id interaction
--------- -----------
1234 did_something
1234 viewed_banner
1234 did_something
1234 did_something
1234 viewed_and_clicked_banner <- point of interest
这是问题的核心:将数据分成重叠的组!完成此操作后,每个组都可以聚合为例如:
cookie_id did_something viewed_banner viewed_and_cli... clicked?
--------- ------------- ------------- ----------------- --------
1234 1 0 0 no
1234 3 1 0 yes
这里did_something 和viewed_banner 中的数字是这些交互的计数(不包括兴趣点),但也可以执行其他类型的聚合。 clicked? 属性只是描述了两种“兴趣点”中的哪一种是交互提要中的最后一次交互。
我尝试查看 Pandas apply 和 groupby 方法,但无法提出生成所需重叠组的方法。
替代方法是使用一些 for 循环,但如果有一种简单有效的方法来解决问题,我宁愿不这样做。
【问题讨论】:
-
我不清楚你想要的输出是如何产生的。
did_something列是从该用户到该点的数据中interaction下的累积did_somethings数吗?另外,为什么viewed_banner在所需输出中的第一行是 0? -
你能详细解释一下你是如何计算的吗?
-
对不起。可以看到我遗漏了一些细节。我现在试图更详细地解释它。感谢您准确指出我错过了@TomAugspurger。
标签: python pandas time-series data-mining data-extraction