首页 > 解决方案 > Python:挖掘时序序列的方法

问题描述

我有一个如下所示的数据集:

timestamp          event

12/1/2020 14:30     A  
12/1/2020 14:12     C
12/1/2020 14:10     A
12/1/2020 15:01     B
11/1/2020 21:20     A
11/1/2020 21:00     C
   .....           ...

events是用户对应用程序的操作。timestamp是引发该特定事件的时间。我想挖掘数据中的事件序列,以找出从用户开始使用应用程序之日起用户的工作流程(有时间限制的市场篮分析?)在应用程序内部。

我想了解的是用户最常执行的一组步骤(事件)。

例如:输出可能类似于:

1 event sequence = {A}    # since it occurs the most number of times
2 event sequence = {A,C}  # since C is raised most number of times after A
3 event sequence = {} #event sequence of 3 steps that occurs most frequently   

注意:在特定时间范围(例如 20 分钟)内发生的事件可以被视为一系列事件。

......................... 解决这个问题的正确方法是什么?

标签: pythonpandastime-series

解决方案


对于单个事件:

df.event.value_counts().head(1)

对于多个事件:

from scipy import stats
from skimage.util import view_as_windows
event = df.event.values
for n in range(1,4):
  seq = view_as_windows(event,n).sum(-1)
  print(stats.mode(seq)[0])

输出:

['A']
['AC']
['ABA']

推荐阅读