实现Python将csv数据导入到Neo4j

目录

一、获取数据集

[1.1 获取数据集](#1.1 获取数据集)

[1.2 以"记事本"方式打开文件](#1.2 以“记事本”方式打开文件)

[1.3 另存为"UTF-8"格式文件](#1.3 另存为“UTF-8”格式文件)

[1.4 选择"是"](#1.4 选择“是”)

[二、 打开Neo4j并运行](#二、 打开Neo4j并运行)

[2.1 创建新的Neo4j数据库](#2.1 创建新的Neo4j数据库)

[2.2 分别设置数据库名和密码](#2.2 分别设置数据库名和密码)

[​编辑 2.3 启动Neo4j数据库](#编辑 2.3 启动Neo4j数据库)

[2.4 打开Neo4j数据库](#2.4 打开Neo4j数据库)

[2.5 运行查看该数据库是否为空](#2.5 运行查看该数据库是否为空)

三、打开Python创建项目

[3.1 创建一个包,存项目](#3.1 创建一个包,存项目)

[3.2 创建一个项目](#3.2 创建一个项目)

[3.3 检查自己的依赖是否完全](#3.3 检查自己的依赖是否完全)

[3.3.1 点击"File"-"Settings"](#3.3.1 点击“File”-“Settings”)

[3.3.2 找到"Project:PythonProject"-"Python Interpreter"](#3.3.2 找到“Project:PythonProject”-"Python Interpreter")

[3.4 导入相关依赖,打开Terminal](#3.4 导入相关依赖,打开Terminal)

[3.5 输入命令](#3.5 输入命令)

四、实现Python连接Neo4j

[4.1 Python连接Neo4j测试](#4.1 Python连接Neo4j测试)

[4.2 导入数据集](#4.2 导入数据集)

[4.3 处理数据集](#4.3 处理数据集)

[4.4 初始化neo4j并合并数据集关系](#4.4 初始化neo4j并合并数据集关系)

[4.5 把节点导入到Neo4j中](#4.5 把节点导入到Neo4j中)

[4.6 运行代码后,查看Neo4j是否有节点](#4.6 运行代码后,查看Neo4j是否有节点)

[4.7 导入节点关系](#4.7 导入节点关系)

[4.8 查看Neo4j](#4.8 查看Neo4j)

五、该过程出现的Bug

[5.1 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte](#5.1 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte)


一、获取数据集

1.1 获取数据集

《我是刑警》的人物关系数据集资源https://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 运行查看该数据库是否为空

python 复制代码
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 输入命令

python 复制代码
pip install neo4j-python-driver pandas py2neo

四、实现Python连接Neo4j

4.1 Python连接Neo4j测试

python 复制代码
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 导入数据集

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

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

运行结果如下

4.3 处理数据集

python 复制代码
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并合并数据集关系

python 复制代码
# 初始化一个空列表来存储所有的元组
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中

python 复制代码
#把节点导入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 导入节点关系

python 复制代码
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粉丝群发https://blog.csdn.net/Z0412_J0103/article/details/144074981下一篇文章:

相关推荐
jghhh018 小时前
C# 图片水印工具(支持9个位置)
数据库·microsoft·c#
高洁018 小时前
用知识图谱重构搜索引擎
人工智能·python·数据挖掘·virtualenv·知识图谱
广州灵眸科技有限公司8 小时前
3Tops NPU + 4核高性能架构:灵眸科技EASY-EAI-PI2开发板,为边缘AI开启“easy模式”
服务器·前端·人工智能·python·科技·深度学习·架构
RS&8 小时前
DAHITI水位数据产品批量下载(python)
python
27669582928 小时前
逆向视角解决:wsgsig dd03/dd05算法生成
python·滴滴出行·dd03·dd05·wsgsig·wsgsig算法·wsgsig逆向
AC赳赳老秦8 小时前
技术文章素材收集自动化:用 OpenClaw 自动爬取行业资讯、技术热点、优质文章
运维·开发语言·python·自动化·wpf·deepseek·openclaw
SilentSamsara8 小时前
模型评估与超参调优:交叉验证、Optuna 与模型选择策略
人工智能·python·深度学习·机器学习·青少年编程
辰海Coding8 小时前
MiniSpring框架学习笔记-JDBC 访问框架:如何抽取 JDBC 模板并隔离数据库?
java·数据库·笔记·学习·spring
叫我:松哥8 小时前
基于LSTM与ARIMA的城市空气质量分析与预测系统
人工智能·python·rnn·算法·机器学习·flask·lstm
指尖在键盘上舞动8 小时前
RKNN 模型部署:onnx转rknn后精度下降 —— 精度调优与问题排查
python·ubuntu·rk3588·rknn·onnx·npu