python - parse_edgelist 与加权网络重复? python 网络x

标签 python networkx

我编写了一些代码,从我拥有的一些 Twitter 关系数据的 .txt 文件中导入边缘列表。数据是定向的并且包含重复值。我想将此数据加载到包含边权重的 DiGraph() 中,但我无法弄清楚该部分。我正在考虑使用类似 Counter() 的东西来计算重复的边,但我不确定如何获取该计数并将其包含在图表中。

我提供了一个 .txt 文件示例来展示我的数据。

.txt 数据示例

# twitter data
# retrieved at: 07.08.2014
# total number of records: 8
# exported by: userXYZ
#
# fields: date, time, source, target
10.12.2013; 02:00; tweeterA; tweeterB
10.12.2013; 02:01; tweeterB; tweeterC
10.13.2013; 02:04; tweeterC; tweeterA
10.13.2013; 02:08; tweeterC; tweeterA
10.13.2013; 02:10; tweeterD; tweeterB
10.13.2013; 02:11; tweeterA; tweeterC
10.13.2013; 02:13; tweeterC; tweeterB
10.13.2013; 02:18; tweeterA; tweeterD

现有代码

import networkx as nx

header = ['date', 'time', 'source', 'target']

data = [{key: value for (key, value) in zip(header, line.strip().split('; '))} for line in open('data.txt') if not line.startswith('#')]

edgelist = []
for i in data:
    edgelist.append(" ".join([
    i['source'],
    i['target']]))

G = nx.parse_edgelist(edgelist,create_using=nx.DiGraph())

nx.draw(G)

最佳答案

我认为你已经非常接近了,是的,你可以使用collections.Counter()。然后,您需要通过将权重设置为数据属性来将权重与每条边关联起来。

from collections import Counter
import networkx as nx

edge_counts = Counter((' '.join(line.strip().split('; ')[2:]) for line in open('data.txt') if not line.startswith('#')))

G = nx.parse_edgelist(('%s %d' % edge for edge in edge_counts.items()),
                      data=(('weight',int),),
                      create_using=nx.DiGraph())

# nx.draw(G)

from pprint import pprint
pprint(sorted(G.edges(data=True)))

应该给你这个输出:

[('tweeterA', 'tweeterB', {'weight': 1}),
 ('tweeterA', 'tweeterC', {'weight': 1}),
 ('tweeterA', 'tweeterD', {'weight': 1}),
 ('tweeterB', 'tweeterC', {'weight': 1}),
 ('tweeterC', 'tweeterA', {'weight': 2}),
 ('tweeterC', 'tweeterB', {'weight': 1}),
 ('tweeterD', 'tweeterB', {'weight': 1})]

关于python - parse_edgelist 与加权网络重复? python 网络x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665966/

相关文章:

python - 如何计算神经网络模型中的精度、召回率和 F1 分数?

python - 如何在 Windows 上安装 webpy 框架

python - 缩进错误 : unexpected indent - Python 2. 7

python - NetworkX 制作边组合的迭代列表

python - 如何将 networkx (python) 节点序列化为 json 格式?

python - 在 XML 的结束标记之前插入字符串

python过滤字符串以返回列表

python - 绘制嵌套的 networkx 图

json - 从 JSON 文件将图形读入 NetworkX

python - 如果节点之间存在路径,则在节点列表之间创建新边 - networkx