分析数据框中类别变量的变化

时间:2019-12-27 22:08:58

标签: python pandas algorithm machine-learning data-science

我有一个关键数据框,其中包含许多旅行者前往世界各地的信息。 我的枢纽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,西班牙-美国是一条受欢迎的路线

1 个答案:

答案 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)]