python - MySQL 中的最后一次接触归因

标签 python mysql

  Conversions

  user_id   | tag       | timestamp           
|---------  |--------   |---------------------|
| 1         | click1    | 2016-11-01 01:20:39 |
| 2         | click2    | 2016-11-01 09:48:10 |
| 3         | click1    | 2016-11-04 14:27:22 |
| 4         | click4    | 2016-11-05 17:50:14 |



  User Sessions

  user_id   | utm_campaign      | session_start           
|---------  |---------------    |---------------------|
| 1         | outbrain_2        | 2016-11-01 00:15:34 |
| 1         | email             | 2016-11-01 01:00:29 |
| 2         | google_1          | 2016-11-01 08:24:39 |
| 3         | google_4          | 2016-11-04 14:25:06 |
| 4         | google_1          | 2016-11-05 17:43:02 |

根据上面的 2 个表格,我希望将每个转化事件映射到将特定用户带到网站的最近的广告系列(也称为最后一次触摸/最后一次点击归因)。

所需的输出是格式为的表格:

  user_id   | tag       | timestamp           | campaign
|---------  |--------   |---------------------|-----------
| 1         | click1    | 2016-11-01 01:20:39 | email
| 2         | click2    | 2016-11-01 09:48:10 | google_1
| 3         | click1    | 2016-11-04 14:27:22 | google_4
| 4         | click4    | 2016-11-05 17:50:14 | google_1

请注意用户 1 如何通过 outbrain_2 营销事件访问该网站,然后通过电子邮件营销事件返回该网站。在用户第二次访问期间的某个时候,他们发生了转化,因此转化应归因于电子邮件而不是 outbrain_2。

有没有办法在 MySQL 或 Python 中做到这一点?

最佳答案

您可以使用 Pandas 在 Python 中执行此操作。我假设您可以将数据从 MySQL 表加载到 Pandas 数据帧 conversionssessions。首先,连接两个表:

all = pd.concat([conversions,sessions])

新框架中的一些元素将是 NA。创建一个新列来收集两个表中的时间戳:

all["ts"] = np.where(all["session_start"].isnull(),
    all["timestamp"],
    all["session_start"])

按此列排序,向前填充时间值,按用户 ID 分组,然后从每个组中选择最后(最近)行:

groups = all.sort_values("ts").ffill().groupby("user_id",as_index=False).last()

选择正确的列:

result = groups[["user_id", "tag", "timestamp", "utm_campaign"]]

我用您的示例数据尝试了此代码并得到了正确的答案。

关于python - MySQL 中的最后一次接触归因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40921913/

相关文章:

python - 有效的请求 URL 在 web2py 中是否会有 '.html' 扩展名?

java - python 中的索引错误

python - 如何从两个1D数组生成2D网格并将其转换为数据帧?

python - py2exe 和 Sympy 的奇怪错误

mysql - 错误 "Cannot add foreign key constraint"而不尝试创建外键

mysql - 查询更新问题

mysql - 连接MySQL中的3个表以选择字段

python - 如何将django模型保存在数据库中以供用户自定义 View ?

mysql - 在 MySQL 中更新特定列后触发触发器

mysql - NOT LIKE 不与列进行比较