我有一个关键数据框,其中包含许多旅行者前往世界各地的信息。 我的枢纽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,西班牙-美国是一条受欢迎的路线
答案 0 :(得分:1)
您可以做的最简单的事情是,通过将每个用户列及其移位后的自身压缩在一起,创建起点-目的地元组,然后将其传递给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)]