跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

使用 Python 将 CSV 数据导入 Neo4j 图数据库

演示利用 Python 脚本结合 py2neo 库,将 CSV 格式的人物关系数据清洗并导入 Neo4j 图数据库的全过程。涵盖文件编码转换、环境依赖安装、图节点与关系的创建以及常见编码错误的排查方案,帮助开发者快速构建本地知识图谱原型。

心动瞬间发布于 2026/4/7更新于 2026/10/1888 浏览
使用 Python 将 CSV 数据导入 Neo4j 图数据库

使用 Python 将 CSV 数据导入 Neo4j 图数据库

本文演示了如何利用 Python 脚本结合 py2neo 库,将 CSV 格式的人物关系数据清洗并导入 Neo4j 图数据库的全过程。涵盖文件编码转换、环境依赖安装、图节点与关系的创建以及常见编码错误的排查方案。

一、数据准备

在开始之前,确保你的 CSV 文件编码正确。很多中文数据源默认是 GBK 或 ANSI,直接读取容易报错。

  1. 用记事本打开 CSV 文件。
  2. 选择'另存为',编码格式务必选 UTF-8。
  3. 保存时确认覆盖原文件或重命名新文件。

这一步很关键,后续代码若出现 UnicodeDecodeError,通常是因为文件编码不匹配。

文章配图

二、环境搭建

1. 启动 Neo4j

本地运行 Neo4j 数据库,创建一个新的数据库实例,设置好用户名和密码(默认通常是 neo4j / password,建议修改)。

启动后进入 Browser 界面,输入以下 Cypher 语句验证连接是否成功且数据库为空:

match(n) return n;

如果返回空结果集,说明数据库已就绪。

文章配图

2. 配置 Python 项目

在 PyCharm 或其他 IDE 中创建新项目,检查解释器环境。需要安装以下核心依赖:

  • neo4j-python-driver: Neo4j 官方驱动
  • pandas: 处理 CSV 数据
  • py2neo: 简化图数据库操作的封装库

在 Terminal 中执行安装命令:

pip install neo4j-python-driver pandas py2neo

安装完成后,建议在 IDE 的 Settings -> Project Interpreter 中确认这些包已存在。

三、连接与测试

编写一个简单的连接测试脚本,确保 Python 能连通 Neo4j。注意替换为你实际设置的密码。

from py2neo import Graph

# 连接本地 Neo4j,端口默认为 7474
graph = Graph("bolt://localhost:7687", auth=("neo4j", "你的密码"))

# 简单查询验证
result = graph.run("MATCH (n) RETURN count(n)").data()
print(f"当前节点数:{result[0]['count(n)']}")

运行无误后,即可进行正式的数据导入。

四、核心导入逻辑

这里分为两步:先创建节点(Node),再建立关系(Relationship)。

1. 加载与解析数据

使用 Pandas 读取 CSV,提取人物和关系字段。假设 CSV 包含 人物, 关系, 关系人物 三列。

import pandas as pd

# 读取 CSV 文件,注意 encoding 参数需与文件一致
invoice_data = pd.read_csv('your_data.csv', encoding='utf-8')

# 预处理:将所有元组存入列表
tuple_total = []
for index, row in invoice_data.iterrows():
    ties_total = [row['人物'], row['关系'], row['关系人物']]
    tuple_total.append(ties_total)

print(f"共解析 {len(tuple_total)} 条关系")

2. 创建节点

遍历所有人物名称,去重后批量创建节点。为了避免重复创建,可以使用 merge 模式,但为了演示清晰,这里展示基础创建逻辑。

from py2neo import Node

people_list = list(set([row[0] for row in tuple_total] + [row[2] for row in tuple_total]))

def create_node(people):
    for name in people:
        # 定义标签为 '人物',属性为 name
        node_1 = Node('人物', name=name)
        graph.create(node_1)

create_node(people_list)

此时回到 Neo4j Browser 查看,应该能看到一批孤立的节点。

3. 建立关系

利用 NodeMatcher 查找已存在的节点,然后构建关系对象。

from py2neo import Relationship, NodeMatcher

matcher = NodeMatcher(graph)

for i in range(len(tuple_total)):
    name_1 = matcher.match('人物', name=tuple_total[i][0]).first()
    name_2 = matcher.match('人物', name=tuple_total[i][2]).first()
    rel_type = tuple_total[i][1]
    
    if name_1 and name_2:
        relationship = Relationship(name_1, rel_type, name_2)
        graph.create(relationship)

最后再次查询图谱,观察节点间是否形成了连线。

文章配图

五、常见问题排查

UnicodeDecodeError

如果在读取 CSV 时报错 UnicodeDecodeError: 'utf-8' codec can't decode byte...,这通常意味着文件编码不是 UTF-8。

解决方案:

  1. 重新打开 CSV 文件。
  2. 另存为时强制选择 UTF-8 编码。
  3. 确保 Python 代码中的 encoding='utf-8' 与文件实际编码一致。

文章配图

通过上述步骤,你可以快速将结构化表格数据转化为图数据库中的知识网络,为后续的分析挖掘打下基础。

目录

  1. 使用 Python 将 CSV 数据导入 Neo4j 图数据库
  2. 一、数据准备
  3. 二、环境搭建
  4. 1. 启动 Neo4j
  5. 2. 配置 Python 项目
  6. 三、连接与测试
  7. 连接本地 Neo4j,端口默认为 7474
  8. 简单查询验证
  9. 四、核心导入逻辑
  10. 1. 加载与解析数据
  11. 读取 CSV 文件,注意 encoding 参数需与文件一致
  12. 预处理:将所有元组存入列表
  13. 2. 创建节点
  14. 3. 建立关系
  15. 五、常见问题排查
  16. UnicodeDecodeError

更多推荐文章

查看全部
  • Web 安全实战:Robots.txt 协议原理与利用防御指南
  • 1 分钟图文指南:用 Trae AI 将设计稿自动转为前端代码
  • Retinaface+CurricularFace 镜像内 Python 3.11.14 安全补丁升级方法
  • AI 算力提升下的能耗与散热挑战及电源解决方案
  • AI 大模型开发者必读书籍:《GPT 图解大模型是怎样构建的》
  • 采摘机器人毕业设计实战:从机械控制到感知决策的全栈实现
  • Rembg 图像去背服务独立部署与性能优化指南
  • HarmonyOS Next DevEco Studio 使用指南:添加 Ability 与服务卡片
  • C++ STL Vector 模拟实现与核心原理解析
  • Spring AI 1.1.2 集成 MCP 协议:Tavily 搜索实战
  • C++ 二叉搜索树简单实现:增删查改详解
  • C++ 图论最短路径算法:Dijkstra、Bellman-Ford 与 Floyd
  • 大模型落地应用:难点分析与破局之道
  • Mac Big Sur 下使用 Docker 部署 OpenCode 实现 AI 自动化开发
  • JDK 11 安装与环境变量配置教程
  • LeetCode 21:合并两个有序链表
  • 多模态大模型技术路线与构建实践指南
  • Flutter 工具库 arcane_helper_utils 鸿蒙适配指南
  • C++ 智能指针:彻底解决内存泄漏问题
  • AI Agent 新范式:FastGPT+MCP 协议实现工具增强型智能体构建

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online