将neo4j查询结果加载到python的`igraph`图中

如何将Cypher查询的结果加载到python中的igraph中,同时保留所有edge和vertex属性?

解决方法:

使用py2neo和igraph的Graph.TupleList方法很容易.

您需要同时安装py2neo和igraph.

pip install py2neo
pip install python-igraph

这两个软件包都依赖于Graph类,因此在导入时应将它们作为其他别名.

from py2neo import Graph as pGraph
from igraph import Graph as iGraph

首先,使用py2neo的Graph对象连接到Neo4j.

neo4j = pGraph()

然后编写一个Cypher查询以返回边缘列表.假设我们已经将示例电影数据集加载到Neo4j中,并且我们想要一起表演的演员的边缘列表.

query = """
MATCH (p1:Person)-[:ACTED_IN]->(:Movie)<-[:ACTED_IN]-(p2:Person)
RETURN p1.name, p2.name
"""

data = neo4j.cypher.execute(query)
print data[0]

这给了我们一起行动的演员的边缘清单.

p1.name      | p2.name    
--------------+-------------
Hugo Weaving | Emil Eifrem

方便地,py2neo的Graph.cypher.execute返回类似于命名元组列表的内容,因此我们可以将其直接传递给igraph的Graph.TupleList方法来创建igraph对象.

ig = iGraph.TupleList(data)
print ig

现在我们有了一个igraph对象.

<igraph.Graph at 0x1083a2908>

谁拥有最高学位?

best = ig.vs.select(_degree = ig.maxdegree())["name"]
print best

当然是汤姆·汉克斯.

[u'Tom Hanks']
上一篇:java – 如何在使用spring-data-neo4j时启用neo4j webadmin?


下一篇:mysql – 在赌场的24/7员工名单的数据库模型