如何使用Dask判断用户是否连续对同一广告系列及广告进行浏览和点击
使用Dask判断用户连续执行view/click操作的实现方案
核心思路
按user_id、campaignId、adId组合分组,对每组内的记录按时间戳升序排序,通过对比相邻记录的action字段,判断是否存在连续的view后接click(或双向操作,可按需调整)的行为。
具体步骤与代码
1. 导入依赖并加载数据
import dask.dataframe as dd import pandas as pd # 方式1:从CSV文件读取数据(替换为实际文件路径) df = dd.read_csv( "your_data.csv", parse_dates=["timestamp"], dtype={ "user_id": "string", "action": "string", "adId": "string", "campaignId": "string" } ) # 方式2:直接构造示例数据的Dask DataFrame data = [ ("2016-09-21 22:11:00", "7c74953c-66cc-48bd-9d02-a02bf039cf3f", "click", "adId_09", "campaignId_01"), ("2016-06-25 18:29:00", "676a083e-2f8e-4ff2-9ec2-270f7f9d6033", "view", "adId_09", "campaignId_02"), ("2016-02-14 19:03:00", "77158997-0dfa-48b7-9149-973dc151ef8d", "click", "adId_02", "campaignId_02"), ("2016-03-26 06:27:00", "78aa2467-b502-413b-94e9-04ec8210bd13", "click", "adId_07", "campaignId_03") ] df = dd.from_pandas(pd.DataFrame(data, columns=["timestamp", "user_id", "action", "adId", "campaignId"]), npartitions=1)
2. 分组排序并生成连续操作判断字段
# 按用户、广告活动、广告ID分组,组内按时间戳排序 sorted_df = df.groupby(["user_id", "campaignId", "adId"]).apply( lambda x: x.sort_values("timestamp"), meta=df._meta ) # 获取上一条记录的action字段 sorted_df["prev_action"] = sorted_df.groupby(["user_id", "campaignId", "adId"])["action"].shift(1) # 判断是否存在「view→click」的连续操作 sorted_df["is_continuous_view_click"] = (sorted_df["prev_action"] == "view") & (sorted_df["action"] == "click") # 若需要判断双向连续(click→view也算),可替换为: # sorted_df["is_continuous_action_pair"] = ( # (sorted_df["prev_action"] == "view") & (sorted_df["action"] == "click") # ) | ( # (sorted_df["prev_action"] == "click") & (sorted_df["action"] == "view") # )
3. 计算并查看结果
# 触发Dask计算,获取结果DataFrame result = sorted_df.compute() # 筛选出存在目标连续操作的记录 continuous_records = result[result["is_continuous_view_click"]] print(continuous_records)
关键说明
- 分组逻辑:必须同时按
user_id、campaignId、adId分组,确保仅对比同一用户对同一广告活动下同一广告的操作序列。 - 排序必要性:只有按时间戳排序后,
shift获取的相邻记录才对应时间上的连续操作。 - meta参数:
groupby.apply中指定meta是为了让Dask明确输出数据结构,避免计算过程中出现类型错误。
内容的提问来源于stack exchange,提问作者Caio Serpa
相关产品推荐
相关产品推荐

