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

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

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

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

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

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

from py2neo import Graph, Node, Relationship
import csvfr= 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 csvfr= 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_)

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

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

  1. python操作sqlite3 导入csv文件_[转载]SQLite 3导入导出成txt或csv操作

    平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库,可以在网上下到. 进入管理: sqlite3.exe d:\\test.db //假设数据是 d:\\test.db > ...

  2. Python使用Pandas导入csv文件产生错误的解决方式(UnicodeDecodeError)

    众所周知,Pandas是一个很强大的库,可用于数据分析.我们常常要使用Pandas来导入csv文件,进而通过编程对文件中的数据加以分析. 笔者在以前通常使用如下的方式来导入数据,一列一列的进行分析,十 ...

  3. python操作文本之CSV文件

    python 操作csv文件有两种方法,一种是使用pandas来读写csv文件,第二种是使用csv模块读写csv文件 一.pandas读写csv文件 1.df = pd.read_csv(filepa ...

  4. Python操作数据库写入CSV文件

    一.背景 在做APP自动化测试数据进行分离的时候,需要将数据库的瓶码数据获取到,然后再传入接口,我在网上边学边做花了两天的时间终于,弄成了理想的样子.在这里记录自己的学习过程. 二.环境 Python ...

  5. python如何将utf-8编码文件改为ansi编码文件_Excel导入CSV文件乱码?两个小方法让文件正常显示...

    最近网友抱怨,收到别人发来的数据表,打开后长这样: CSV再EXCEL中显示为乱码 除了数字,其他是啥玩意儿 完全乱码... (乱码!乱马!乱吗?乱!) 但是当使用记事本打开,检查确认是否文件有问题时 ...

  6. 知识图谱实战(03):python操作neo4j实战

    Python操作Neo4j例子(官方版本) Neo4j的Python版本驱动 Neo4j 提供了一个Python版本的驱动包,用来连接Neo4j数据库,从而完成图数据库的增删改查操作. 1.安装指定版 ...

  7. python导入csv文件-jupyter 导入csv文件方式

    先将准备的文件上传到自己的jupyter工作空间 import numpy as np import pandas as pd housing = pd.read_csv('housing.csv') ...

  8. 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系

         我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系.如有需要请关注 "阿黎逸阳的代码" 公众号的后续文章,会手把手教大家用R搭 ...

  9. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

最新文章

  1. bzoj1562[NOI2009]变换序列——2016——3——12
  2. Java设计模式-中介者模式
  3. for循环一定要指定键么 vue_第 2 篇:上手 Vue 展示 todo 列表
  4. mysql5.7下载及详细安装教程_MySQL 5.7 下载及安装教程(详细)
  5. Linux LAMP架构搭建
  6. 56-狂拍灰太狼游戏
  7. 可牛影像动感渐隐闪图教程
  8. oracle加密表空间
  9. ABC-Endless Walk-(缩点+拓扑dp)
  10. 德州农工大学计算机专业研究生,德州农工大学计算机工程(无论文)理学硕士研究生申请要求及申请材料要求清单...
  11. cesium 设置时间_Cesium 车辆跟踪事件气泡弹窗一直开启
  12. 曾诗斯老师商务礼仪实战专家
  13. 光照相关 shader
  14. Hbuilder 真机运行显示未受信任的解决方法(ios)
  15. 监控页面所有 ajax请求
  16. java实现随机数生成算法_Java 语言实现的随机数生成算法
  17. 华为公有云认证培训认证体系- HCIA,HCIP ,HCIE
  18. CAE云实证Vol.5:怎么把需要45天的突发性Fluent仿真计算缩短到4天之内?
  19. Kafka Eagle服务部署
  20. 聊聊为什么淘宝要提出「双飞翼」布局

热门文章

  1. python后端面试题2020_2020年ajax面试题及答案(最新),python面试题2020
  2. Ajax和Axios相关面试题总结
  3. Android原生SQLite操作以及greenDao框架操作SQLite
  4. win7计算机找不到脚本文件夹,Win7系统打开软件提示无法找到脚本文件的解决方案...
  5. 计算机路由表更新命令,怎么修改删除路由表项
  6. 基于WinRAR软件的文件自动打包与异地备份方案
  7. ntpd与ntpdate的区别(集群间时间同步)
  8. oracle删除表空间
  9. linux重启java项目
  10. 记一次libusb库函数“libusb_bulk_transfer”的调用关系追踪