将带有重复项的边缘列表解析为加权网络?python网络X

2024-06-30 08:35:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经写了一些代码来从我的一些Twitter关系数据的.txt文件中导入一个edgelist。数据是定向的,并且包含重复的值。我想将这些数据加载到一个包含边缘权重的DiGraph(),但我无法确定这部分内容。我正在考虑使用类似Counter()来计算重复边的数量,但我不确定如何计算该计数并将其包含在图中。在

我已经包含了一个.txt文件的示例,以显示我的数据将是什么样子。在

Sample.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

现有代码

^{pr2}$

Tags: 文件数据代码txttwitter边缘权重定向
1条回答
网友
1楼 · 发布于 2024-06-30 08:35:10

我想你很接近,是的,你可以用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)))

应该给你这个输出:

^{pr2}$

相关问题 更多 >