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

NetworkX教程:如何将多种中心性指标写入CSV文件

如何将NetworkX计算的中心性指标保存为CSV表格

这事儿其实很简单,用Python的pandas库就能轻松把这些中心性指标整理成表格并导出为CSV——它处理结构化数据和文件导出的能力特别适合这个场景。下面是完整的实现步骤和代码示例:

步骤1:准备依赖

首先确保你安装了pandas,如果没有的话,在终端执行:

pip install pandas

步骤2:完整代码实现

我先补全你没写完的聚类系数代码,然后把所有指标整合导出:

import networkx as nx
import pandas as pd

# 1. 构建你的网络
G = nx.Graph()
G.add_edges_from([(1,2),(1,3),(2,3),(3,4),(4,5),(4,6)])

# 2. 计算各类中心性指标
degree_centrality = nx.degree_centrality(G)
eigenvector = nx.eigenvector_centrality(G)
katz = nx.katz_centrality_numpy(G)
closeness_centrality = nx.closeness_centrality(G)
betweenness_centrality = nx.betweenness_centrality(G)
clustcoef = nx.clustering(G)  # 补全你未写完的聚类系数计算

# 3. 整理指标为表格结构
# 方式一:直接构建DataFrame(更直观)
df = pd.DataFrame({
    "Node": list(G.nodes()),
    "Degree Centrality": [degree_centrality[node] for node in G.nodes()],
    "Eigenvector Centrality": [eigenvector[node] for node in G.nodes()],
    "Katz Centrality": [katz[node] for node in G.nodes()],
    "Closeness Centrality": [closeness_centrality[node] for node in G.nodes()],
    "Betweenness Centrality": [betweenness_centrality[node] for node in G.nodes()],
    "Clustering Coefficient": [clustcoef[node] for node in G.nodes()]
})

# 4. 导出为CSV文件
df.to_csv("network_centrality_metrics.csv", index=False)

代码解释

  • 我们把每个节点的各项指标对应起来,用pandas.DataFrame转换成表格格式,其中Node列存储节点ID,其他列对应各类中心性指标。
  • to_csv方法的index=False参数是为了避免把DataFrame的行索引(默认是0,1,2...)写入CSV,让文件更整洁。
  • 执行完代码后,你会在当前目录下得到一个network_centrality_metrics.csv文件,用Excel或文本编辑器打开就能看到规整的表格。

备选方案:用Python内置csv模块(无需pandas)

如果你不想安装pandas,也可以用Python自带的csv模块手动写入,但代码会繁琐一些:

import networkx as nx
import csv

G = nx.Graph()
G.add_edges_from([(1,2),(1,3),(2,3),(3,4),(4,5),(4,6)])

# 计算指标(同上)
degree_centrality = nx.degree_centrality(G)
eigenvector = nx.eigenvector_centrality(G)
katz = nx.katz_centrality_numpy(G)
closeness_centrality = nx.closeness_centrality(G)
betweenness_centrality = nx.betweenness_centrality(G)
clustcoef = nx.clustering(G)

# 写入CSV
with open("network_metrics.csv", "w", newline="") as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(["Node", "Degree Centrality", "Eigenvector Centrality", "Katz Centrality", 
                     "Closeness Centrality", "Betweenness Centrality", "Clustering Coefficient"])
    # 写入每行数据
    for node in G.nodes():
        writer.writerow([
            node,
            degree_centrality[node],
            eigenvector[node],
            katz[node],
            closeness_centrality[node],
            betweenness_centrality[node],
            clustcoef[node]
        ])

不过还是更推荐用pandas,代码更简洁易维护,后续如果要添加新指标或者处理数据也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:25:20