Importing non-square adjacency matrix into Networkx python(将非平方邻接矩阵导入Networkx Python)
本文介绍了将非平方邻接矩阵导入Networkx Python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在下面的 pandas 数据框表格中有一些数据,其中列代表离散技能,行代表离散工作。仅当作业需要技能时,才会显示1,否则为0。 skill_1, skill_2,
job_1 1, 0,
job_2 0, 0,
job_3 1, 1,
我想使用networkx创建一个图表来可视化工作和技能之间的这种关系。我尝试了两种方法,一种是在数据帧本身上,nx.from_pandas_adjacency
和nx.from_numpy_matrix
。后一种方法被应用于数据帧的数字表示,其中删除了列名和行名。
在任何一种情况下,都会引发错误,因为这是一个非方阵。这是有意义的,因为networkx可能会将列和行解释为同一组节点。然而,列和节点在这里代表了截然不同的东西。两个工作通过它们共享的技能联系在一起,两个技能通过它们共享的工作联系在一起,但任何两种技能或任何两种工作之间都没有直接的优势。
如果我的行和列是不同的节点集,如何将数据导入到networkx?
推荐答案
一种选择是生成缺少的行和列
(我对实现这一点的矢量化方法很好奇,所以我问了this question谁有提供这种方法的答案。)
df = pd.DataFrame({'skill_1': {'job_1': 1, 'job_2': 0, 'job_3': 1},
'skill_2': {'job_1': 0, 'job_2': 0, 'job_3': 1}})
edges = df.columns
for i in df.index:
df[i] = [0 for _ in range(len(df.index))]
for e in edges:
df = df.append(pd.Series({c:0 for c in df.columns},name=e))
这为我们提供了:
>>> df
skill_1 skill_2 job_1 job_2 job_3
job_1 1 0 0 0 0
job_2 0 0 0 0 0
job_3 1 1 0 0 0
skill_1 0 0 0 0 0
skill_2 0 0 0 0 0
然后我们可以使用nx.from_pandas_adjacency
读取到networkx(假设您需要有向图)
G = nx.from_pandas_adjacency(df, create_using=nx.DiGraph)
或者,我们可以使用df.STACK()
df = pd.DataFrame({'skill_1': {'job_1': 1, 'job_2': 0, 'job_3': 1},
'skill_2': {'job_1': 0, 'job_2': 0, 'job_3': 1}})
G = nx.DiGraph()
for x,y in df.stack().reset_index().iterrows():
G.add_node(y['level_0'])
G.add_node(y['level_1'])
if y[0]:
G.add_edge(y['level_0'], y['level_1'])
这篇关于将非平方邻接矩阵导入Networkx Python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:将非平方邻接矩阵导入Networkx Python


猜你喜欢
- 沿轴计算直方图 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12