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

Python基于表格人员数据构建关系图/树的可用库及入门方案咨询

可选Python库
  • 图结构处理类:NetworkX:轻量易上手的图数据建模工具,支持快速定义顶点/边属性、查询节点关联关系,适配三层层级关系的结构构建需求
  • 交互式可视化类:PyVis:可直接生成带交互能力的HTML格式关系图,支持缩放、拖拽、节点高亮,无需额外前端开发即可实现选中查看逻辑;Plotly:也支持网络图绘制,可搭配Dash开发更复杂的筛选交互
  • 本地GUI类:如果要做桌面端应用,可使用PyQt/PySide 搭配 Graphviz 实现,Graphviz的层级布局天然适配你需要的三级节点树状展示效果
  • 低代码Demo类:Streamlit + PyVis/Plotly:最快实现可用Demo的组合,Streamlit自带文本输入、下拉筛选组件,几行代码即可完成人员选择触发关系图生成的逻辑
开发步骤
  1. 数据预处理:先明确表格数据中的关联规则,定义哪些字段属于人员的关联参数(比如所属部门、项目组、毕业院校等),哪些字段对应其他关联人员,把原始表格清洗成可映射的关联对:比如人员A-关联参数-参数值、参数值-关联人员-人员B的映射关系
  2. 图结构建模:用NetworkX构建完整的图数据集,给不同层级的节点打分类标记(0级为主人员、1级为关联参数、2级为关联人员),同时可提前配置节点样式属性(颜色、大小、显示名称等)
  3. 交互逻辑开发:用Streamlit或者PyQt实现交互层,开发人员选择功能,用户选中指定人员后,自动从完整图数据中提取以该人员为中心的三层子图
  4. 可视化渲染:按照节点层级配置不同的展示样式,用PyVis或者Graphviz渲染为可交互的关系图,展示在前端/桌面界面上
  5. 功能迭代:可按需新增节点点击查看详情、关联关系筛选、导出图片/数据等附加功能
简易实现模板

以下为Streamlit+PyVis+NetworkX组合的可运行模板,替换数据源即可快速跑通:

import streamlit as st
import networkx as nx
from pyvis.network import Network
import pandas as pd
import os

# 1. 加载人员表格数据,替换为你自己的数据源路径
@st.cache_data
def load_data():
    # 示例表格字段参考:人员ID、姓名、部门、项目组、直属领导ID
    df = pd.read_csv("your_person_data.csv")
    return df

df = load_data()

# 2. 人员选择交互组件
person_list = df["姓名"].drop_duplicates().tolist()
selected_person = st.selectbox("选择要查询的人员", person_list)

# 3. 构建选中人员的三层关系图
if selected_person:
    G = nx.DiGraph()
    # 添加一级主节点
    main_person = df[df["姓名"] == selected_person].iloc[0]
    G.add_node(selected_person, level=0, color="#ff4b4b", size=30)
    
    # 配置要展示的二级关联参数,可按需增删字段
    relate_params = {
        "所属部门": main_person["部门"],
        "参与项目": main_person["项目组"],
        "直属上级": main_person["直属领导ID"]
    }
    for param_name, param_val in relate_params.items():
        param_node = f"{param_name}:{param_val}"
        G.add_node(param_node, level=1, color="#4b9bff", size=20)
        G.add_edge(selected_person, param_node)
        
        # 添加三级关联人员节点
        relate_persons = df[df[param_name] == param_val]["姓名"].tolist()
        for p in relate_persons:
            if p != selected_person:
                G.add_node(p, level=2, color="#4bff9b", size=15)
                G.add_edge(param_node, p)

    # 4. 渲染为交互关系图
    net = Network(directed=True, height="600px", width="100%", bgcolor="#222222", font_color="white")
    net.from_nx(G)
    # 生成临时HTML文件展示
    net.save_graph("temp_graph.html")
    with open("temp_graph.html", "r", encoding="utf-8") as f:
        html = f.read()
    st.components.v1.html(html, height=600)
    # 清理临时文件
    os.remove("temp_graph.html")

依赖安装命令:pip install streamlit networkx pyvis pandas,运行命令:streamlit run 你的脚本文件名.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:06:04