NetworkX从CSV导入节点/边失败,求正确构建图的方法
解决NetworkX从CSV构建图的问题
问题根源
你用sknetwork.data.from_csv读取的结果并不是NetworkX能直接识别的节点ID列表或边元组格式——sknetwork的这个方法返回的是邻接矩阵(边文件)或特征矩阵(节点文件),不是原生的节点/边列表,直接转成列表传给NetworkX的add_nodes_from/add_edges_from自然无效。
正确方案:直接解析CSV文件
放弃sknetwork的from_csv,用Python内置csv模块读取并解析数据,转换成NetworkX需要的格式。
1. 读取边文件(real_edges.csv)
边文件每行格式是(节点1, 节点2) 权重,提取节点对并添加到图中:
import csv import networkx as nx G = nx.Graph() # 读取边 with open("real_edges.csv", "r") as f: # 假设分隔符是制表符,若实际是空格可调整为delimiter=" " reader = csv.reader(f, delimiter="\t") for row in reader: # 解析节点对:去除括号、分割节点ID node_part = row[0].strip().strip("()") u, v = node_part.split(",") u = int(u.strip()) v = int(v.strip()) # 解析权重(可选,无权重则默认1) weight = int(row[1].strip()) if len(row) > 1 else 1 G.add_edge(u, v, weight=weight)
2. 读取节点文件(real-fnodes.csv)
根据你提供的两种节点数据格式,分情况处理:
情况A:节点行格式为(节点ID, 属性) 标记
# 读取节点属性并添加到图中 with open("real-fnodes.csv", "r") as f: reader = csv.reader(f, delimiter="\t") for row in reader: node_part = row[0].strip().strip("()") node_id, attr_val = node_part.split(",") node_id = int(node_id.strip()) attr_val = int(attr_val.strip()) label = int(row[1].strip()) if len(row) > 1 else 1 # 为节点绑定属性 G.nodes[node_id]["attr"] = attr_val G.nodes[node_id]["label"] = label
情况B:节点行是多属性格式(对应你的列表示例)
with open("real-fnodes.csv", "r") as f: reader = csv.reader(f) for row in reader: node_id = int(row[0]) # 将后续元素转为数值型特征 features = [float(val) for val in row[1:]] G.nodes[node_id]["features"] = features
3. 验证图结构
运行后用以下代码确认结果:
print("节点数:", G.number_of_nodes()) print("边数:", G.number_of_edges()) # 查看指定节点的属性 print(G.nodes[0])
备选方案:用sknetwork转成NetworkX图
如果一定要用sknetwork,可先构建sknetwork图对象再转格式:
from sknetwork.data import from_edge_list, from_csv import networkx as nx # 读取边列表并生成邻接矩阵 adjacency = from_edge_list("real_edges.csv", delimiter="\t", weighted=True) # 转成NetworkX图 G = nx.from_scipy_sparse_array(adjacency) # 读取节点特征矩阵并绑定属性 node_features = from_csv("real-fnodes.csv") for i, features in enumerate(node_features): G.nodes[i]["features"] = features.tolist()
内容的提问来源于stack exchange,提问作者Data Science Analytics Manager
相关产品推荐
相关产品推荐

