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

使用NetworkX和PyVis从DataFrame三列构建无权重项目关联网络图

用Pandas、NetworkX和PyVis构建项目-公司-国家关联网络图

步骤1:安装依赖库

先确保安装所需Python库:

pip install pandas networkx pyvis

步骤2:导入库并准备数据

导入库后创建示例DataFrame(真实数据可直接替换示例内容):

import pandas as pd
import networkx as nx
from pyvis.network import Network

# 示例DataFrame
data = {
    'Company': ['T-mobile', 'T-mobile'],
    'Project': ['5G upgrade', 'Network upgrade'],
    'Country': ['Germany', 'Kuwait']
}
df = pd.DataFrame(data)

步骤3:构建NetworkX无权重图

遍历DataFrame每行数据,添加节点及关联边:

# 初始化无向图
G = nx.Graph()

# 遍历数据添加节点与边
for _, row in df.iterrows():
    company = row['Company']
    project = row['Project']
    country = row['Country']
    
    # 添加节点(重复添加会自动忽略)
    G.add_node(company, label=company, group='company')
    G.add_node(project, label=project, group='project')
    G.add_node(country, label=country, group='country')
    
    # 建立项目与公司、项目与国家的关联边
    G.add_edge(project, company)
    G.add_edge(project, country)

给节点添加group属性,方便后续可视化时区分节点类型。

步骤4:用PyVis生成交互式网络图

将NetworkX图转换为交互式HTML图:

# 初始化PyVis网络
net = Network(notebook=False, height='750px', width='100%', bgcolor='#222222', font_color='white')

# 从NetworkX加载图数据
net.from_nx(G)

# 自定义节点颜色(可选)
for node in net.nodes:
    if node['group'] == 'company':
        node['color'] = '#00ff00'
    elif node['group'] == 'project':
        node['color'] = '#0000ff'
    elif node['group'] == 'country':
        node['color'] = '#ff0000'

# 保存并生成可视化文件
net.show('project_company_country_network.html')

运行后会生成HTML文件,打开即可查看交互式网络图,支持拖拽节点、缩放视图等操作。

关键说明

  • 无权重特性:所有边默认权重一致,无需额外配置
  • 节点去重:NetworkX的add_node方法会自动跳过已存在的节点
  • 交互优势:PyVis生成的HTML图适合查看复杂关联关系,操作更灵活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:31