我有一个数据透视表,包含了许多旅行者在世界各地旅行的目的地信息。我的数据透视表大致如下:
Name Anna Robert JamesDate 2018-10-01 Bulgaria Spain Croatia2018-10-02 Portugal NaN Portugal 2018-10-03 Spain USA Spain2018-10-04 USA USA Spain2018-10-05 USA Canada USA
有100列(100位旅行者)和300天的数据。
基于这样的数据,我如何探索哪些路线是最受欢迎的?可以明显看出,所有人都从西班牙前往了美国。罗伯特也从西班牙飞往美国,只是他的飞行时间长达两天。三个旅行者中有两个从葡萄牙到达了西班牙,所以这也是一个受欢迎的路线。
有没有办法使用机器学习算法展示受欢迎的路线?我将非常感激任何建议。
编辑:我们可以假设路线有两个节点,因此根据这个数据框,西班牙-美国是一条受欢迎的路线
回答:
你可以做的最简单的事情是通过将每个用户列与其自身的移位版本进行组合来创建出发-到达元组,然后将这些元组传递给Counter对象。
import pandas as pdfrom collections import Counterdf.fillna(method='ffill', inplace=True)# 创建一个Counter对象并传递出发-到达元组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)]