知识图谱——Python操作Neo4j导入CSV文件建立图谱

首先Neo4j是图数据库,最重要的就是结点和边的关系,每两个结点和边都可以看成三元组,主谓宾的关系,当然结点也是可以添加属性的,但是首先要有结点,在添加属性。本片文章就是用简单的方式一次性给大家讲解清楚。

简单起见,我们用西游记师徒四人为例子(手动写的,为了理解),来体现出本章要讲的操作

一、先把人物和关系罗列出来

注意,要将文件保存为.csv格式

 ps:知识图谱的建立,数据来源主要分为三种,一种是非结构化数据(文本)、半结构化数据(可以爬虫技术在一些网站上获取),结构化数据(关系型数据)。

二、要建立结点,只有有了结点才会有关系,和之后的属性等。代码如下:

from py2neo import Graph, Node, Relationship
import csv

fr= open("G:\四人关系.csv", mode="r", encoding="gbk") # 如果路径是在工程目录下直接下相对路径,如果不在就写绝对路径
lst = []
node = []
for row in csv.reader(fr):
    lst_ = []
    lst_.append(row[0])
    lst_.append(row[1])
    lst_.append(row[2])
    lst_.append(row[3])
    lst_.append(row[4])
    lst.append(lst_)
    node.append(row[0]+' '+row[1])
    node.append(row[3]+' '+row[4])
# print(lst)
graph = Graph('bolt://localhost:7687',name="neo4j",password="******")
node = set(node) # 消除重复结点
#  建立结点:
for item in node:
    shiti,label = item.split()
    cypher_ = "CREATE (:" + label + " {name:'" + shiti + "'})     "
    graph.run(cypher_)
# 建立关系 :
for item in lst:
    cypher_ = "MATCH  (a:" + item[1] + "),(b:" + item[4] + ") WHERE a.name = '" + item[0] + "' AND b.name = '" + item[3] + "' CREATE (a)-[r:" + item[2] + "]->(b)"
    graph.run(cypher_)

建立是先根据第1,2列、4,5列建立结点后,才根据第3列建立的关系,运行后,师徒四人的图谱就建立好了,效果如下图:

 三、增加属性

和以上操作一样,现在EXCEL上写好属性,如图(只写了一点),自己做的时候把自己要的属性像这样写清楚:

代码和上面的一样,只是换了cypher语句:

from py2neo import Graph, Node, Relationship
import csv

fr= open("属性.csv", mode="r", encoding="gbk")
lst = []
node = []
for row in csv.reader(fr):
    lst_ = []
    lst_.append(row[0])
    lst_.append(row[1])
    lst_.append(row[2])
    lst_.append(row[3])
    lst.append(lst_)
    node.append(row[0]+' '+row[1])
    node.append(row[2]+' '+row[3])
graph = Graph('bolt://localhost:7687',name="neo4j",password="******")
for item in lst:
    cypher_ = "MATCH (a:" + item[1] + "{name:'" + item[0] + "'}) SET a." + item[2] + " = '" + item[3] +"'"
    graph.run(cypher_)

运行之后,点击结点就可以看到属性的信息啦。

  • 10
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
回答: 要在Neo4j导入CSV文件,你可以按照以下步骤进行操作。首先,确保你已经准备好了CSV文件,并将其放置在Neo4j安装根路径下的import文件夹中。然后,在Neo4j的命令行中使用LOAD CSV语句来导入数据。例如,你可以使用以下命令导入名为ratings.csv文件中的数据: ``` LOAD CSV WITH HEADERS FROM "file:///ratings.csv" AS link CREATE (:Ratings {userId: link.userId, movieId: link.movieId, rating: link.rating, timestamp: link.timestamp}) ``` 这个命令将创建一个名为Ratings的节点,并将CSV文件中的数据映射到节点的属性上。你可以根据你的CSV文件的结构和需要进行相应的调整。使用USING PERIODIC COMMIT可以在导入大量数据时防止内存溢出。如果你的CSV文件包含标题行,可以使用WITH HEADERS选项来处理。 请注意,你需要将"file:///ratings.csv"中的路径替换为你实际的CSV文件路径。完成这些步骤后,你就可以在Neo4j中成功导入CSV文件数据了。\[2\] #### 引用[.reference_title] - *1* *3* [neo4j创建数据库及导入csv文件内容详解](https://blog.csdn.net/fortune_mz/article/details/129858523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Neo4j学习笔记4--导入csv文件](https://blog.csdn.net/cqn9012/article/details/89388185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值