如何在pyspark中使用Graphframe或igraph或networx查找顶点的成员资格



我的输入数据帧是 df

    valx      valy 
1: 600060     09283744
2: 600131     96733110 
3: 600194     01700001
我想创建图形,将

上面的两列视为边缘列表,然后我的输出应该具有图形的所有顶点及其成员资格的列表。

我也在pyspark和networx库中尝试过Graphframes,但没有得到想要的结果

我的输出应该如下所示(它基本上都是 v1 下的 valx 和 valy(作为顶点(以及它们在 V2 下的成员信息(

V1               V2
600060           1
96733110         1
01700001         3

我在下面试过

import networkx as nx
import pandas as pd
filelocation = r'Pathtodataframe df csv'
Panda_edgelist = pd.read_csv(filelocation)
g = nx.from_pandas_edgelist(Panda_edgelist,'valx','valy')
g2 = g.to_undirected(g)
list(g.nodes)
``

我不确定你问两次同样的问题是否违反了任何规则。

要检测带有图形框的社区,首先必须创建图形框对象。为示例数据帧提供以下代码片段,其中显示了必要的转换:

from graphframes import *
sc.setCheckpointDir("/tmp/connectedComponents")

l = [
(  '600060'  , '09283744'),
(  '600131'  , '96733110'),
(  '600194'  , '01700001')
]
columns = ['valx', 'valy']
#this is your input dataframe 
edges = spark.createDataFrame(l, columns)
#graphframes requires two dataframes: an edge and a vertice dataframe.
#the edge dataframe has to have at least two columns labeled with src and dst.
edges = edges.withColumnRenamed('valx', 'src').withColumnRenamed('valy', 'dst')
edges.show()
#the vertice dataframe requires at least one column labeled with id
vertices = edges.select('src').union(edges.select('dst')).withColumnRenamed('src', 'id')
vertices.show()
g = GraphFrame(vertices, edges)

输出:

+------+--------+ 
|   src|     dst| 
+------+--------+ 
|600060|09283744| 
|600131|96733110| 
|600194|01700001| 
+------+--------+ 
+--------+ 
|      id| 
+--------+ 
|  600060| 
|  600131| 
|  600194| 
|09283744| 
|96733110| 
|01700001| 
+--------+

您在另一个问题的评论中写道,社区检测算法目前对您无关紧要。因此,我将选择连接的组件:

result = g.connectedComponents()
result.show()

输出:

+--------+------------+ 
|      id|   component| 
+--------+------------+ 
|  600060|163208757248| 
|  600131| 34359738368| 
|  600194|884763262976| 
|09283744|163208757248| 
|96733110| 34359738368| 
|01700001|884763262976| 
+--------+------------+

其他社区检测算法(如 LPA(可以在用户指南中找到。

相关内容

  • 没有找到相关文章

最新更新