首页 > 编程语言 >实现Python将csv数据导入到Neo4j

实现Python将csv数据导入到Neo4j

时间:2024-12-20 15:59:34浏览次数:7  
标签:导入到 name Python 数据库 Neo4j neo4j total

目录

一、获取数据集

1.1 获取数据集

1.2 以“记事本”方式打开文件

​编辑

1.3  另存为“UTF-8”格式文件

1.4 选择“是”

二、 打开Neo4j并运行

2.1 创建新的Neo4j数据库

2.2 分别设置数据库名和密码

​编辑 2.3 启动Neo4j数据库

2.4 打开Neo4j数据库

 2.5 运行查看该数据库是否为空

三、打开Python创建项目 

3.1 创建一个包,存项目

3.2 创建一个项目

3.3 检查自己的依赖是否完全

3.3.1 点击“File”-“Settings”

3.3.2  找到“Project:PythonProject”-"Python Interpreter"

3.4 导入相关依赖,打开Terminal

3.5 输入命令

四、实现Python连接Neo4j 

4.1 Python连接Neo4j测试

4.2 导入数据集

4.3 处理数据集

4.4 初始化neo4j并合并数据集关系

4.5 把节点导入到Neo4j中

4.6 运行代码后,查看Neo4j是否有节点

4.7 导入节点关系

4.8 查看Neo4j

五、该过程出现的Bug

5.1 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte 


一、获取数据集

1.1 获取数据集

《我是刑警》的人物关系数据集资源icon-default.png?t=O83Ahttps://download.csdn.net/download/Z0412_J0103/90160496

1.2 以“记事本”方式打开文件

1.3  另存为“UTF-8”格式文件

1.4 选择“是”

二、 打开Neo4j并运行

2.1 创建新的Neo4j数据库

2.2 分别设置数据库名和密码

 2.3 启动Neo4j数据库

2.4 打开Neo4j数据库

 2.5 运行查看该数据库是否为空

match(n) return n;

三、打开Python创建项目 

3.1 创建一个包,存项目

3.2 创建一个项目

3.3 检查自己的依赖是否完全

3.3.1 点击“File”-“Settings”

3.3.2  找到“Project:PythonProject”-"Python Interpreter"

检查是否导入了“neo4j”、“pandas”、”py2neo

3.4 导入相关依赖,打开Terminal

3.5 输入命令

pip install neo4j-python-driver pandas py2neo

四、实现Python连接Neo4j 

4.1 Python连接Neo4j测试

from py2neo import *
import pandas as pd
from neo4j import GraphDatabase


graph = Graph('http://neo4j:123456@127.0.0.1:7474')

其中的”123456“是你刚刚建立的Neo4j密码,此处只需要修改该密码就可以了

4.2 导入数据集

invoice_data = pd.read_csv("D:/我是刑警.csv", header=0)
print(invoice_data.shape)

其中地址需要改变,其它地方都不用变

运行结果如下

4.3 处理数据集

peoples = list(set(invoice_data['人物'].astype(str)))
people_ties = list(set(invoice_data['关系人物'].astype(str)))
people = list(set(peoples).union(set(people_ties)))
print(people)

# 清除neo4j里面的所有数据
graph.delete_all()

 执行结果如下

4.4 初始化neo4j并合并数据集关系

# 初始化一个空列表来存储所有的元组
tuple_total = []

# 迭代DataFrame的每一行
for index, row in invoice_data.iterrows():
    ties_total = [row['人物'], row['关系'], row['关系人物']]
    # 将所有元组添加到结果列表中
    tuple_total.extend([ties_total])
print(tuple_total)

4.5 把节点导入到Neo4j中

#把节点导入neo4j中
def create_node(people):
    for name in people:
        node_1 = Node('人物', name = name)
        graph.create(node_1)
create_node(people)

4.6 运行代码后,查看Neo4j是否有节点

4.7 导入节点关系

matcher = NodeMatcher(graph)
# 导入关系
for i in range(0, len(tuple_total)):
    name_1 = matcher.match('人物', name=tuple_total[i][0]).first()
    name_2 = matcher.match('人物', name=tuple_total[i][2]).first()
    rel = tuple_total[i][1]
    relationship = Relationship(name_1, rel, name_2)
    graph.create(relationship)

4.8 查看Neo4j

 

五、该过程出现的Bug

5.1 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte 

解决过程:

是因为你的CSV文件没有设置为”UTF-8“ ,具体过程看本文的1.2和1.3过程

上一篇文章:CSDN中群发功能及自动回复设置教程_csdn粉丝群发icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/144074981下一篇文章: 

标签:导入到,name,Python,数据库,Neo4j,neo4j,total
From: https://blog.csdn.net/Z0412_J0103/article/details/144611549

相关文章

  • python可以在命令行上运行的小工具模块
    以下是Python可以在命令行上运行的一些小工具模块,以及它们的用途和用法示例。这些模块大多属于Python的标准库,因此无需额外安装即可使用。模块用途用法示例http.server启动一个简单的Web服务器,用于共享文件或提供简单的Web服务python-mhttp.server在默认端口8000......
  • python 装饰器@property 用法及案例增删改查
    在Python中,@property装饰器允许你将类的方法当作属性来访问,从而实现属性的封装和验证。对于增删改查(CRUD)操作,你可以结合@property、@<属性名>.setter和@<属性名>.deleter装饰器来定义相应的方法。下面是一个完整的例子,展示了如何使用这些装饰器来实现一个简单的CRUD接口:classPe......
  • 基于yolov8的小麦麦穗检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源
       更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章功能演示:基于yolov8的小麦麦穗检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili(一)简介基于yolov8的小麦麦穗检测系统在pytorch框架下实现的,这是一个完整的项目,包括......
  • python 计时装饰器@timer 用法及案例
    在Python中,装饰器(decorator)是一种高级功能,它允许你在不修改原有函数或方法定义的情况下,为其添加额外的功能。计时装饰器(@timer)是一个常见的例子,用于测量函数或方法的执行时间。下面是一个简单的计时装饰器的实现及其用法案例:计时装饰器实现importtimefromfunctoolsimportw......
  • python 日志装饰器@logexecution 用法及案例
    在Python中,日志装饰器(@logexecution)是一种用于在函数或方法执行前后自动记录日志的装饰器。这种装饰器对于调试、监控和审计代码执行非常有用。下面是一个简单的日志装饰器的实现及其用法案例:日志装饰器实现importloggingimportfunctools#配置日志记录器(可选,但通常建议这......
  • python 重试装饰器@retryonexception 用法及案例
    在Python中,重试装饰器(@retryonexception)是一种用于在函数或方法执行过程中遇到异常时自动重试的装饰器。这种装饰器对于处理可能由于临时问题(如网络延迟、资源争用等)而失败的操作非常有用。下面是一个简单的重试装饰器的实现及其用法案例:重试装饰器实现importtimeimportfunct......
  • python类中 __开头的函数【魔法方法】
    在Python中,魔法方法(MagicMethods)或双下划线方法(DunderMethods)是一类特殊的方法,它们以双下划线(__)开头和结尾。这些方法为对象提供了丰富的功能,允许你定义对象的内置操作行为,如初始化、比较、表示、数学运算等。以下是一些常见的魔法方法及其用途,并附有相应的示例代码。1.初始......
  • python学习——与时间日期相关的方法
    文章目录类方法例子不用考虑闰年了!Python中处理日期和时间的功能主要依赖于datetime模块。类datetime.date:表示日期(年、月、日)的类。datetime.time:表示时间(小时、分钟、秒、微秒)的类。datetime.datetime:表示日期和时间的组合。datetime.timedelta:表......
  • python毕设 基于web的养宠系统的实现程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于宠物管理系统的研究,现有研究主要以宠物领养、销售等传统功能为主。专门针对基于web的综合性养宠系统,涵盖宠物帮遛、遛宠信息等功......
  • 修改python jsonpickle源码, 实现不序列化对象私有成员(3)
    发现之前修改源码后,虽然过滤掉对象的私有成员,但是反序列化的时候,发现生成的对象只有只有公有成员,不包括私有成员.这不是我想要的,因为没有私有成员,对象就不完整了,并且有时候还需要一些私有成员的默认值.所以,还需要再优化一下.修改unpickler.py文件的def_restor......