我正在学习图表(它们看起来非常有用)并且想知道是否可以就构建图表的可能方式获得一些建议。
简而言之,假设我每天都获得采购订单数据,有些日子与前一天相同,而在其他日子则不同。例如,昨天我订购了铅笔和橡皮擦,我创建了两个节点来表示它们,然后今天我收到了橡皮擦和马克笔的订单,依此类推。每天之后,我的程序还会查看谁订购了什么,如果 Bob 昨天订购了铅笔,然后今天订购了橡皮擦,它会创建一个有向边。我的逻辑是我可以看到谁每天买了什么,我可以跟踪 Bob 的购买行为(也许用它来推断他自己或其他用户的模式)。
我的问题是,我正在使用 networkx(python) 并为昨天创建一个节点“铅笔”,然后为第 2 天创建另一个节点“铅笔”,我无法区分它们。
我认为(并且一直)将其命名为 day2-pencil,然后扫描整个图表并删除“day2-”以跟踪铅笔订单。这对我来说似乎是错误的(更不用说处理器上的昂贵了)。我认为关键是如果我能以某种方式将每一天标记为自己的子图,那么当我想研究特定的一天或几天时,我不必扫描整个图表。
随着我的测试数据变大,它变得越来越混乱,所以我想知道最佳实践是什么?任何生成建议都会很棒(因为 networkx 似乎功能齐全,所以他们可能有办法做到这一点)。
提前致谢!
更新:仍然没有运气,但这可能会有所帮助:
import networkx as nx
G=nx.Graph()
G.add_node('pencil', day='1/1/12', colour='blue')
G.add_node('eraser', day='1/1/12', colour='rubberish colour. I know thats not a real colour')
G.add_node('pencil', day='1/2/12', colour='blue')
我输入以下命令的结果G.node
是:
{'pencil': {'colour': 'blue', 'day': '1/2/12'}, 'eraser': {'colour': 'rubberish colour. I know thats not a real colour', 'day': '1/1/12'}}
它显然用 1/2/12 覆盖了 1/1/12 的铅笔,不确定我是否可以制作一个不同的铅笔。