我会添加第三列month,然后连接每个列表。因此,如果您有 5 个月的前 100 个列表,您将创建一个包含 500 个条目的大表:
User-id | Threat_score | month
aaa 45 1
bbb 32 1
ccc 20 1
... ... ...
bbb 64 2
ccc 29 2
... ... ...
然后,要回答您的第一个问题,您可以简单地计算每个用户 ID 的出现次数。例如,如果用户bbb五次出现在您的串联表中,那么您知道该人在五个月内都在您的列表中。
为了回答你的第二个问题,你可以做一个group by操作来计算用户的一些聚合函数。具有平均函数的group by操作有点粗糙并且对异常值敏感,但它可能会让你接近你正在寻找的东西。
第三个问题的一种可能性是计算月n-1和月之间威胁得分的差异n。也就是说,对于每个月(不包括第一个月),您从当前威胁得分中减去用户之前的威胁得分。您可以将此列为新列,以便您的表格现在看起来像:
User-id | Threat_score | month | difference
aaa 45 1 null
bbb 32 1 null
ccc 20 1 null
... ... ... ...
bbb 64 2 32
ccc 29 2 9
... ... ...
使用此表,您可以再次执行group by操作以查找始终具有比上个月更高的威胁评分的人,或者您可以简单地查找当月与上月之间差异很大的人。
正如您所建议的,可视化这些数据是一个非常好的主意。如果您随着时间的推移关心这些威胁得分(我认为您会关心),我强烈建议您使用简单的折线图,x 轴为月份,y 轴为威胁得分。这并不花哨,但它非常容易解释,并且应该为您提供有关趋势的有用信息。
大多数这些东西(不是可视化)可以用 SQL 完成,所有这些都可以用 R 或 Python(以及许多其他语言)完成。祝你好运!