You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将加州路网数据转为有向图并开展图分析?

使用Python分析加州路网数据集(SNAP)

核心工具:NetworkX库

NetworkX是Python中专门用于图分析的工具库,能轻松处理路网这类无向/有向图,支持度分布、聚类系数等常用分析指标的快速计算。


步骤1:安装依赖库

先安装所需的工具包:

pip install networkx pandas numpy matplotlib
  • networkx:核心图处理库
  • pandas:读取文本/Excel格式的数据集
  • numpy:处理邻接矩阵
  • matplotlib:可视化度分布(可选)

步骤2:读取数据集

情况A:读取原始SNAP文本文件

原始文本文件开头包含注释行(# FromNodeId ToNodeId),用pandas跳过注释行读取:

import pandas as pd

# 读取文本文件,跳过以#开头的行,自动识别空格分隔符
df = pd.read_csv("california_road_network.txt", comment="#", sep="\s+", names=["FromNodeId", "ToNodeId"])

情况B:读取Excel文件

如果已将数据集转换为Excel格式,直接读取:

df = pd.read_excel("california_road_network.xlsx")

步骤3:构建图对象

路网是双向连通结构,用NetworkX创建无向图实例:

import networkx as nx

# 创建无向图实例
G = nx.Graph()

# 从DataFrame中提取所有边并添加到图中
edges = list(zip(df["FromNodeId"], df["ToNodeId"]))
G.add_edges_from(edges)

# 查看图的基本信息
print(f"节点总数:{G.number_of_nodes()}")
print(f"边总数:{G.number_of_edges()}")

若需处理有向路网,替换为nx.DiGraph()即可。

步骤4:生成邻接矩阵

稠密邻接矩阵(小网络适用)

import numpy as np

adj_matrix = nx.to_numpy_array(G)
print("稠密邻接矩阵示例:")
print(adj_matrix[:5, :5])  # 仅展示前5x5的部分

稀疏邻接矩阵(大网络推荐)

加州路网节点数量较多,稀疏矩阵能大幅节省内存:

sparse_adj_matrix = nx.to_scipy_sparse_array(G)
print("稀疏邻接矩阵形状:", sparse_adj_matrix.shape)

步骤5:计算度分布

度分布是图分析的基础指标,计算并可视化:

from collections import Counter
import matplotlib.pyplot as plt

# 获取所有节点的度数
degrees = [d for n, d in G.degree()]

# 统计不同度数的节点数量
degree_counts = Counter(degrees)
sorted_degrees = sorted(degree_counts.items())

# 可视化度分布
plt.bar([d for d, cnt in sorted_degrees], [cnt for d, cnt in sorted_degrees])
plt.xlabel("节点度数")
plt.ylabel("节点数量")
plt.title("加州路网节点度分布")
plt.show()

步骤6:计算聚类系数

全局平均聚类系数

反映整个网络的聚集紧密程度:

avg_clustering = nx.average_clustering(G)
print(f"全局平均聚类系数:{avg_clustering:.4f}")

单个节点的聚类系数

查看特定节点的局部聚集程度:

node_clustering = nx.clustering(G)
# 示例:查看节点0的聚类系数
print(f"节点0的聚类系数:{node_clustering[0]:.4f}")

内容的提问来源于stack exchange,提问作者Aylin Naebzadeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:20:25