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。我还想分析这个图表以从中找出趋势。请帮助我如何实现这一目标。
如果您的图形存储为 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
咱们试试吧:
max(dict(g_test.edges).items(), key=lambda x: x[1]['callduration'])
Run Code Online (Sandbox Code Playgroud)
在这个图网络中找到最大权重边。
| 归档时间: |
|
| 查看次数: |
4461 次 |
| 最近记录: |