您可以分析图形的最简单方法之一是创建 python脚本或 jupyter笔记本。 Python一直是大多数数据科学家的首选语言,我们知道原因。它努力简单明了!
因此,本着这种简单性的精神,这是一个快速教程,讲述了如何使用 memgraph 和Python进行一些基本网络分析。
一般轮廓是:
- 开始MEMGRAPH
- 连接到MEMGRAPH
- 导入图
- 查询数据库
- 运行图算法
现在,我将向您展示如何完成此操作的示例。如果更多的是您的风格,您也可以看一下这个Jupyter Notebook。
先决条件
对于本教程,您需要安装:
docker之所以使用,是因为memgraph是本机Linux应用程序,如果没有它,就无法在Windows和Macos上安装。即使您正在运行Linux,我也建议使用Docker安装,因为它包含一些其他有用的资源,例如 memgraph Lab 。
1.启动MEMGRAPH
虽然有几种安装memgraph的方法,但建议使用Docker安装 memgraph Platform 。如果您没有Docker,建议您关注this guide。
安装Docker后,您可以通过运行:
来设置MEMGRAPH
docker run -it -p 7687:7687 -p 3000:3000 memgraph/memgraph-platform
此命令将启动下载,并在完成后,运行MEMGRAPH容器。
2.连接到MEMGRAPH
首先,创建一个名为memgraph.py
的文件并添加以下代码:
from gqlalchemy import Memgraph
memgraph = Memgraph("127.0.0.1", 7687)
但是,在我们执行此操作之前,我们需要安装 gqlalchemy 软件包。我们将使用gqlalchemy对象图映射器(OGM)连接到memgraph并轻松执行Cypher查询。 GQLalchemy还作为Memgraph的Python驱动程序/客户端。您可以使用:
安装它
pip install gqlalchemy
提示:您可能需要在安装gqlalchemy之前安装cmake。
现在,通过运行脚本来确保所有内容都可以正常工作:
python3 memgraph.py
如果您遇到错误或需要其他帮助,请肯定地在Discord或通过我们的forum上发消息。
3.导入图
让我们确保备忘录是空的,然后再开始使用其他任何东西。
将以下行添加到memgraph.py
:
memgraph.drop_database()
您将需要下载包含一个简单数据集的this file,称为 Zachary的空手道俱乐部。要将其导入Memgraph,我们首先需要将其复制到Memgraph正在运行的Docker容器中。
通过运行:
找到CONTAINER_ID
docker ps
用以下命令复制文件(别忘了替换CONTAINER_ID
):
docker cp karate-club.csv CONTAINER_ID:karate-club.csv
现在,我们可以执行Cypher命令LOAD CSV
,该命令用于从CSV文件加载数据:
memgraph.execute("""
LOAD CSV FROM "/karate-club.csv" NO HEADER AS row
MERGE (p1:Person {id: row[0]})
MERGE (p2:Person {id: row[1]})
MERGE (p1)-[:FRIENDS_WITH]->(p2);
""")
就是进口。运行脚本后,应将MEMGRAPH与数据填充。您可以通过在地址http://localhost:3000
的浏览器中打开 memgraph Lab 来确保。要从数据库中检索所有内容,请在 query 选项卡中执行以下查询:
MATCH (n)-[r]-(m) RETURN n, r, m;
提示: Memgraph Lab在
http://localhost:3000
上运行,如果您使用Docker安装了MEMGRAPH平台。否则,您需要手动进行download and install Memgraph Lab。
4.查询数据库
让我们确保通过检索正确导入数据:
results = memgraph.execute_and_fetch("""
MATCH (p1:Person)
RETURN p1
ORDER BY ToInteger(p1.id) ASC;
""")
for result in results:
print(result['p1'])
5.运行图形算法
现在,让我们用图表做一些聪明的事情。例如,计算每个节点的Pagerank:
results = memgraph.execute_and_fetch("""
CALL pagerank.get()
YIELD node, rank
RETURN node, rank;
""")
for result in results:
print("The PageRank of node ", result['node'].properties['id'], ": ", result['rank'])
下一步是什么?
您可以看到,使用Python连接到Memgraph并运行图形算法非常容易。我什至有一个建议,您可以在其中应用这些知识。