如何基于电影演员DataFrame在NX中构建合作关系边?
用NetworkX构建演员合作图
核心思路
按电影分组,对每部电影的参演演员生成所有两两组合,将这些组合作为边添加到图中,演员自动成为节点。
完整代码实现
假设你的DataFrame列名为电影和演员姓名,代码如下:
import pandas as pd import networkx as nx from itertools import combinations # 加载你的DataFrame(替换成实际加载逻辑) df = pd.read_csv("你的电影数据.csv") # 初始化无向图 G = nx.Graph() # 按电影分组,遍历每组的演员列表 for _, group in df.groupby("电影"): actors = group["演员姓名"].tolist() # 生成该电影下演员的所有两两组合 actor_pairs = combinations(actors, 2) # 批量添加边 G.add_edges_from(actor_pairs) # 验证结果:查看节点数和边数 print(f"节点数(演员总数): {G.number_of_nodes()}") print(f"边数(合作关系数): {G.number_of_edges()}")
关键优化说明
- 用
itertools.combinations生成两两组合,避免手动嵌套for循环的低效和逻辑错误 add_edges_from批量添加边,比逐个添加效率提升显著,适配41000行的大数据量- 若需统计演员合作次数(给边加权重),可改用
nx.MultiGraph(),先统计组合出现频次再添加带权重的边
内容的提问来源于stack exchange,提问作者Berk Ak
相关产品推荐
相关产品推荐

