在python中的networkx图中查找最大加权边

Ana*_*yal 6 python graph-traversal networkx python-3.x pandas

我想在 networkx 图中找到“n”个最大加权边。怎么可能实现。我已经构建了一个图表如下:

g_test = nx.from_pandas_edgelist(new_df, 'number', 'contactNumber', edge_attr='callDuration')
Run Code Online (Sandbox Code Playgroud)

现在,我想找到前“n”个边权重,即前“n”个 callDurations。我还想分析这个图表以从中找出趋势。请帮助我如何实现这一目标。

Joh*_*chs 8

如果您的图形存储为 g,您可以使用以下方法访问其边,包括它们的属性:

g.edges(data=True)
Run Code Online (Sandbox Code Playgroud)

这将返回一个元组列表。前两个条目是节点,第三个条目是属性字典,如下所示:

[(a,b,{"callDuration":10}),(a,c,{"callDuration":7})]
Run Code Online (Sandbox Code Playgroud)

您可以根据 callDuration 属性对此列表进行排序,如下所示:

sorted(g.edges(data=True),key= lambda x: x[2]['callDuration'],reverse=True)
Run Code Online (Sandbox Code Playgroud)

请注意,我们使用 reverse 来首先查看最大的 callDuration 边缘。

恐怕你的第二个问题很广泛——你可以用网络做很多事情!看看这样的一些教程:https : //programminghistorian.org/en/lessons/exploring-and-analyzing-network-data-with-python


Sco*_*ton 5

咱们试试吧:

max(dict(g_test.edges).items(), key=lambda x: x[1]['callduration'])
Run Code Online (Sandbox Code Playgroud)

在这个图网络中找到最大权重边。