【知识图谱学习】py2neo将csv转换为neo4j三元组知识图谱

构建数据集 data.csv

在这里插入图片描述

读取文件 转换为dataframe后 遍历存储

代码如下:

import pandas as pd
from py2neo import Graph, Node, Relationship
from config import neo4j_uri, neo4j_username, neo4j_password


# 清除Neo4j数据库中的所有节点和关系
def clear_neo4j_database(graph):
    graph.run("MATCH (n) DETACH DELETE n")


def csv_to_neo4j(csv_file, encoding='utf-8'):
    # 读取CSV文件
    df = pd.read_csv(csv_file, encoding=encoding)

    # 连接到Neo4j数据库
    graph = Graph(neo4j_uri, auth=(neo4j_username, neo4j_password))

    # 清除!
    clear_neo4j_database(graph)

    # 获取CSV文件的列名
    columns = df.columns.tolist()

    # 遍历CSV文件中的每一行,添加节点和关系到图中
    for index, row in df.iterrows():
        # 创建或获取每一列的节点
        nodes = []
        for col in columns:
            node = Node(col, name=row[col])
            graph.merge(node, col, "name")
            nodes.append(node)

        # 根据列名创建关系
        for i in range(len(nodes) - 1):
            re = Relationship(nodes[0], f"has_{columns[i + 1]}", nodes[i + 1])
            graph.merge(re)


if __name__ == '__main__':
    # 使用示例
    csv_file = 'data.csv'
    csv_to_neo4j(csv_file)

构建成功!在neo4j中查看

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值