下载
docker pull neo4j:community
官方说明
https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/
启动
docker run \--restart always \--publish=7474:7474 --publish=7687:7687 \--env NEO4J_AUTH=neo4j/your_password \--volume=D:\files\knowledgegraph\data:/data \neo4j:community
打开
打开浏览器在地址栏输入:http://localhost:7474/
首次登录,输入用户名 neo4j 和密码 your_password
Python来读取Excel并通过py2neo创建
要使用 Python 来读取 Excel 数据,并通过 py2neo
创建图谱(将 Excel 中的数据转化为 Neo4j 图数据库中的节点和关系),可以按照以下步骤进行:
步骤概览:
- 使用
pandas
读取 Excel 文件。 - 解析 Excel 数据,确定哪些列表示节点和关系。
- 使用
py2neo
创建图节点和关系。 - 可选:将图数据存储到 Neo4j 数据库。
代码实现
假设你有一个 Excel 文件,其中包含以下列:
- Employee: 员工姓名
- Position: 员工职位
- Company: 所属公司
例如,Excel 数据如下:
Employee | Position | Company |
---|---|---|
Alice | Developer | TechCorp |
Bob | Manager | TechCorp |
Carol | Developer | WebCorp |
目标是根据这张表格创建 Person 和 Company 类型的节点,并在它们之间创建 WORKS_AT 类型的关系。
1. 安装依赖库
如果你还没有安装 pandas
和 py2neo
,可以使用以下命令进行安装:
pip install pandas py2neo
2. 代码示例
import pandas as pd
from py2neo import Graph, Node, Relationship# 连接到 Neo4j 数据库(请根据实际情况修改用户名、密码和数据库地址)
graph = Graph("bolt://localhost:7687", auth=("neo4j", "your_password"))# 读取 Excel 数据
df = pd.read_excel('employees.xlsx') # 假设你的 Excel 文件名是 'employees.xlsx'# 创建节点和关系
for index, row in df.iterrows():# 创建公司节点,如果公司不存在company = Node("Company", name=row['Company'])graph.merge(company, "Company", "name") # 使用 merge 以避免重复公司节点# 创建员工节点employee = Node("Person", name=row['Employee'], position=row['Position'])graph.merge(employee, "Person", "name") # 使用 merge 以避免重复员工节点# 创建员工与公司之间的关系works_at = Relationship(employee, "WORKS_AT", company)graph.create(works_at)print("数据已成功导入 Neo4j 数据库!")
3. 代码解释
-
连接 Neo4j 数据库:
- 使用
Graph("bolt://localhost:7687", auth=("neo4j", "neo4j"))
连接到本地 Neo4j 数据库。 - 根据需要修改
auth
参数中的用户名和密码。
- 使用
-
读取 Excel 文件:
- 使用
pandas.read_excel
读取 Excel 文件内容到 DataFrame。你可以根据实际情况修改文件名和路径。
- 使用
-
创建节点和关系:
- 公司节点:对于每一行,如果公司节点不存在,则创建一个新的节点。通过
graph.merge()
方法确保不会重复创建同名公司。 - 员工节点:同样,对于每一行,如果员工节点不存在,则创建一个新的员工节点。使用
graph.merge()
来避免重复创建同名员工。 - 员工与公司之间的关系:为每一对员工和公司创建
WORKS_AT
关系,并使用graph.create()
将其保存到图数据库。
- 公司节点:对于每一行,如果公司节点不存在,则创建一个新的节点。通过
4. 可选步骤:检查结果
-
Neo4j 浏览器:打开 Neo4j 浏览器,执行查询
MATCH (n) RETURN n LIMIT 25
来查看是否成功导入了节点和关系。 -
Cypher 查询:你可以使用 Cypher 查询语言来查询某个员工在哪个公司工作,或者查询公司之间的关系等。
MATCH (e:Person)-[:WORKS_AT]->(c:Company)
RETURN e.name, c.name
5. 扩展功能
- 批量插入数据:对于大型 Excel 文件,你可能需要考虑批量插入,以提高性能。
py2neo
提供了Batch
API,可以一次性处理多个操作。 - 复杂关系:你可以根据需要创建更复杂的关系和节点属性,拓展图谱模型。
from py2neo import Batchbatch = Batch(graph)for index, row in df.iterrows():# 创建公司节点company = Node("Company", name=row['Company'])batch.merge(company, "Company", "name")# 创建员工节点employee = Node("Person", name=row['Employee'], position=row['Position'])batch.merge(employee, "Person", "name")# 创建员工与公司之间的关系works_at = Relationship(employee, "WORKS_AT", company)batch.create(works_at)# 批量提交
batch.submit()
总结
通过上述步骤,你可以轻松地将 Excel 数据转换为 Neo4j 图数据库中的节点和关系。利用 pandas
读取 Excel 文件和 py2neo
创建节点/关系,可以有效地将结构化数据转化为图数据进行进一步分析和查询。
中文手册
https://we-yun.com/doc/neo4j-chs-doc/