我有透视数据框,其中包含许多旅行者在世界各地旅行中前往的领土的信息。 我的枢轴 df 看起来像这样:
Name Anna Robert James
Date
2018-10-01 Bulgaria Spain Croatia
2018-10-02 Portugal NaN Portugal
2018-10-03 Spain USA Spain
2018-10-04 USA USA Spain
2018-10-05 USA Canada USA
有100列(100个旅行者(和300天。
基于这些数据,如何探索哪些路线最受欢迎? 乍一看,他们都是从西班牙来到美国的。罗伯特也从西班牙飞往美国,只是他的航班持续了2天。三位旅行者中有两名从葡萄牙来到西班牙,因此这也是一条受欢迎的路线。
有没有办法使用 ML 算法显示热门路线?我将非常感谢任何提示。
编辑: 我们可以假设该路由有 2 个节点,因此基于此 df 西班牙-美国是一条受欢迎的路线
您可以做的最简单的事情是通过压缩每个用户列及其移位的自我来创建源-目标元组,然后将元组传递给 Counter 对象。
import pandas as pd
from collections import Counter
df.fillna(method='ffill', inplace=True)
# Create a counter object and pass it the origin-destination tuples
counter = Counter()
for col in df.columns:
routes = list(zip(df[col].shift(1, fill_value=df[col][0]), df[col]))
routes = [(k, v) for k, v in routes if k != v]
counter.update(routes)
counter.most_common(3)
输出:
counter.most_common(3)
Out[76]:
[(('Spain', 'USA'), 3),
(('Portugal', 'Spain'), 2),
(('Bulgaria', 'Portugal'), 1)]