如何将用户的日常活动汇总为每周

Posted

技术标签:

【中文标题】如何将用户的日常活动汇总为每周【英文标题】:how to aggregate daily activities of users into weekly 【发布时间】:2021-10-04 16:07:31 【问题描述】:

我有以下表格,第一个(vle)有行为活动(活动类型很多,有些显示在活动类型列中),另一个(UsersVle)有用户的活动。日期列代表一天和从 0 到 222 开始。我想根据活动类型将用户的活动汇总到几周。例如,在 week1 中,user1 将列作为活动类型的数量,并且每列包括该周内的总 sum_clicks。我想知道如何在使用 python 的 pandas 数据框中做到这一点? 我会感谢你的帮助。

【问题讨论】:

【参考方案1】:
    date 派生一个名为 WEEK 的新字段(您没有提供有关 date 的足够信息来建议如何将其转换为一周(例如 1 = 1 月 1 日?)) 加入您的两个表。表 2 中的 id_site 是表 1 中 id_site 的外键吗?如果是这样,combined_df = table2.merge(table1, on='id_site')。现在,您应该将所有字段都放在一个数据框中。 像这样旋转:user_summary_by_week = pd.pivot_table(combined_df, index=['id_user', 'WEEK'], columns='activity_type', aggfunc='sum', fill_value=0).reset_index(col_level=1)

【讨论】:

我想制作一个包含每个用户每周 sum_clicks 活动的文件或数据框。对于模块中的每个用户,列数(活动类型,如 r、o、url、s 等)将是相同的。您能否更新您的答案以每周工作? 您好像刚刚提到了创建WEEK字段的逻辑,那为什么不创建它并应用算法呢?你还需要我做什么? 首先,谢谢你,杰西。 floor(date+1/7) – 1 无法正常工作。日期信息以天为单位,因此 0-6 表示第 0 周,7-13 表示第 1 周。您知道如何执行此操作吗? 我解决了与周逻辑相关的问题。我有一个问题:如您所见,table1 中的顺序(id_site、model、presentation)应该与表 2 中的相同,但表 2 中的顺序是 model、presentation 和 id_site。使用这个 combine_df = table2.merge(table1, on='id_site') 将导致 module_x,presentation_x 和 module_y,presentation_y。我试过这样 cdf = table2.merge(table1,how='left',left_on=['id_site','module','presentation'],right_on=['id_site','module','presentation']) .不知道对不对? 是的,应该可以,我建议的小区别是使用内部联接(删除“how='left',默认为'inner')。这是因为对于每条记录,您都需要值对于“activity_type”和“sum_click”。将这两个字段合并到 1 个表中是合并点。在缺少连接右侧的记录的情况下,左连接可能会导致某些记录具有空值。

以上是关于如何将用户的日常活动汇总为每周的主要内容,如果未能解决你的问题,请参考以下文章

每周一本书之《Java自然语言处理》(附上期赠书活动获奖名单)

如何将 AWS Redshift 用户活动日志解析为对象?

如何连续运行 PHP 脚本?

线程方法汇总

线程方法汇总

每周向用户发送电子邮件