如何使用 GraphFrame 从边缘列表创建图形

how to create graph from edge list using GraphFrame

我有一个包含两列边列表的数据框,我想使用 pyspark 或 python 从中创建图表 任何人都可以建议如何去做。 在 R 中,可以使用 igraph

中的以下命令完成
graph.edgelist(as.matrix(df))

我的输入数据框是 df

    valx      valy 
1: 600060     09283744
2: 600131     96733110 
3: 600194     01700001

我的输出应该如下所示(基本上都是 V1 下的 valx 和 valy 以及 V2 下的成员信息)

V1               V2
600060           1
96733110         1
01700001         2

根据您想要的输出,您似乎不需要图表,而是需要一个数组来显示您的 V1 值最初存储在哪一行。您可以从原始数据框中获取。

我假设您想要的是将数据框转换为图形格式,而不是上述格式。

import networkx as nx
import pandas as pd

filelocation = r'C:\Users\Documents\Tilo Edgelist'

Panda_edgelist = pd.read_csv(filelocation)

g = nx.from_pandas_edgelist(Panda_edgelist,'valx','valy')

nx.draw(g,with_labels = True,node_size = 0)

上面的代码将在 python 中为您创建一个图表,下面是您使用 networkx 的 draw 函数绘制图表时的输出结果。

我已经假设您正在通过读取某种文件来创建数据框。

如果您可以将此文件转换为 csv 文件,则可以使用 pandas 将其读入数据帧。

我使用的csv文件格式如下:

valx,valy

600060,09283744

600131,96733110 

600194,01700001

用引号中的文件路径代替您的 csv 文件的文件路径。

您可以在下面看到来自 pd.read_csv 的数据帧的样子

   valx      valy
0  600060   9283744
1  600131  96733110
2  600194   1700001

然后我们将此数据帧传递给 networkx 以创建图形

g = nx.from_pandas_edgelist(Panda_edgelist,'valx','valy')

在上面的函数中,您可以看到我已经为它提供了参数 Panda_edgelist,然后 'valx''valy' 分别作为源节点列名和目标节点列名。它使用这些参数创建一个名为 g.

的图

最后,我绘制了使用 nx.draw 生成的图表。

 nx.draw(g,with_labels = True,node_size = 0)

此函数需要您将图形传递给它,在我们的示例中为 g。

with_labels = True用于绘制节点names/ID。

node_size = 0 用于使绘制的节点大小为0。默认情况下,如果你不给函数这个参数,那么它会绘制小红圈来代表图中的节点。