如何识别熊猫数据框行中最常见的模式(考虑组)?

时间:2021-01-19 13:35:22

标签: python pandas dataframe frequency

我有一个 Pandas 数据框,一般来说,它的结构如下:

INDEX   ID   ACTIVITY    TIMESTAMP
0       1      A          12:00
1       1      B          12:10
2       1      C          12:30
3       2      D          12:00
4       2      C          12:40
5       2      A          12:50
6       2      A          13:00
7       3      A          12:15
8       3      B          12:25
9       3      C          12:45

ID 代表进程的不同变体。 ID 组可以包含不同数量的行,它们不必都具有相同的大小。

我需要识别最频繁的序列模式,但仅限于某个 ID 内的模式。

对于上面的例子,我想得到 ID 1 和 3 包含最频繁模式的输出,因为 A-B-C 是这里数据集中最频繁的模式。 如果有来自不同 ID 的任何模式重叠,则不应考虑。例如,如果索引 2 到 4 中的组合“CDC”将更频繁地出现,则不应将其视为一种模式,因为涉及不同的 ID。

理想情况下,最后我会得到一个包含 n 个最频繁模式的 ID 列表(不仅限于重复最频繁的模式)。

到目前为止,我一直在考虑按 ID 分组是否会有所帮助,或者我是否应该将某个 ID 组中的活动转换为一个列表,然后只查找最频繁的列表以使其不那么复杂,但我不是确定它是否有效,或者没有更好的方法。 在寻找一种方法时,我主要是找到了如何在列中找到单个最频繁的条目,但这对我没有帮助。

此外,我找不到以有意义的方式包含时间戳的方法。例如,如果活动 B 和 C 将同时开始,如果顺序交换,我不会将其视为最频繁的模式。以下示例不会被视为相同的“变体”。 对于这部分 - 如何在不更改其他任何内容的情况下对相同时间戳的活动进行排序?

INDEX   ID   ACTIVITY    TIMESTAMP
0       1      A          12:00
1       1      B          12:10
2       1      C          12:10
INDEX   ID   ACTIVITY    TIMESTAMP
0       1      A          12:00
1       1      C          12:10
2       1      B          12:10

任何帮助将不胜感激!

0 个答案:

没有答案