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

如何基于用户组关联关系用Python绘制用户关联图

Python实现用户组关联图绘制

实现思路

  1. 读取CSV数据,解析每个用户所属的分组
  2. 对每个分组,生成组内用户的两两关联边(自动避免重复边)
  3. 使用networkx构建图结构,matplotlib完成可视化绘制

所需依赖

先安装必要的库:

pip install pandas networkx matplotlib

完整代码

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
from itertools import combinations

# 读取CSV数据(如果是本地文件,替换为pd.read_csv('你的文件路径.csv'))
data = pd.DataFrame({
    'User': ['First', 'Second', 'Third'],
    'Group': ['A,B,C', 'B', 'C,D']
})

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

# 添加所有用户作为节点
G.add_nodes_from(data['User'])

# 遍历每个分组,生成用户间的关联边
for groups in data['Group']:
    # 拆分当前用户的多个分组
    for group in groups.split(','):
        # 找出当前分组下的所有用户
        group_members = data[data['Group'].str.contains(group)]['User'].tolist()
        # 生成组内用户的两两配对,添加边(无向图自动去重)
        for pair in combinations(set(group_members), 2):
            G.add_edge(*pair)

# 绘制图形
plt.figure(figsize=(8, 6))
# 用弹簧布局让节点分布更合理,seed固定布局方便复现
pos = nx.spring_layout(G, seed=42)

# 绘制节点、边和标签
nx.draw_networkx_nodes(G, pos, node_size=2000, node_color='lightblue')
nx.draw_networkx_edges(G, pos, width=2, edge_color='gray')
nx.draw_networkx_labels(G, pos, font_size=12, font_weight='bold')

# 隐藏坐标轴
plt.axis('off')
plt.title('User Group Association Graph')
plt.show()

代码说明

  • 用pandas处理CSV数据,示例中直接用DataFrame模拟了你的表格内容,实际使用时替换为读取本地文件即可
  • itertools.combinations负责生成组内用户的两两配对,set()避免同一用户重复出现在组合里
  • networkx.Graph是无向图结构,会自动忽略重复添加的边,无需手动去重
  • 弹簧布局(spring_layout)让节点间的距离更符合视觉逻辑,设置seed可以固定每次绘图的布局样式

运行代码后,就能得到以用户为节点、同组用户间有边连接的可视化图,和你预期的效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:20:13