【发布时间】:2017-10-23 01:20:27
【问题描述】:
我有一个关于用户参加在线课程的数据集。它具有“id”、“事件”、“时间”等功能。我对他们进行分组,并想知道用户在特定日期执行每个事件的频率。我想以天数来计算。
lt = log_train.groupby(['enrollment_id','event','time']).size()
print(lt)
enrollment_id event time
1 access 2014-06-14T09:38:39 2
2014-06-14T09:38:48 1
2014-06-19T06:21:16 2
2014-06-19T06:21:32 1
2014-06-19T06:21:45 1
..
200887 navigate 2014-07-24T03:27:16 1
200887 navigate 2014-07-24T03:27:16 1
page_close 2014-07-24T04:19:55 1
video 2014-07-24T04:19:57 1
200888 access 2014-07-24T03:48:14 2
discussion 2014-07-24T03:47:57 1
navigate 2014-07-24T03:47:17 1
2014-07-24T03:47:28 1
2014-07-24T03:48:01 1
根据我在另一个数据集中看到的信息,有用户 ID、课程 ID 和课程范围时间。
usercourse = pd.merge(enroll,date,how="left", on= 'course_id' )
enrollment_id username \
0 1 9Uee7oEuuMmgPx2IzPfFkWgkHZyPbWr0
1 3 1qXC7Fjbwp66GPQc6pHLfEuO8WKozxG4
2 4 FIHlppZyoq8muPbdVxS44gfvceX9zvU7
course_id from to
0 DPnLzkJJqOOPRJfBxIHbQEERiYHu5ila 2014-06-12 2014-07-11
1 7GRhBDsirIGkRZBtSMEzNTyDr2JQm4xx 2014-06-19 2014-07-18
2 DPnLzkJJqOOPRJfBxIHbQEERiYHu5ila 2014-06-12 2014-07-11
每个用户只有 1 门课程,所有课程的范围相同,均为 30 天。所以我想要的应该是这样的,
enrollment_id event #ofDays #ofActionTimes
1 access 2 2
10 6
30 2
..
200887 navigate 23 1
page_close 30 1
video 1 1
200888 access 12 2
discussion 2 1
navigate 5 3
29 4
**#ofDays means at the Nth day of a course.
#ofActionTimes means how often an event happens on the Nth day.**
由于每门课程都是从不同的日期开始的,我不知道如何在 python 上生成这个数据表单。
希望有人能帮我解决问题!
【问题讨论】:
-
什么是
time和frequency?您能否提供可用于构建示例输出的usercourse数据? -
嗨@andrew_reece,我更新了最后一个代码底部的解释。
标签: python pandas numpy dataframe pandas-groupby