【知识图谱系列】(实例)python操作neo4j构建企业间的业务往来的知识图谱

本章节通过聚焦于"金额"这一核心属性,构建了一幅知识图谱,旨在揭示"销售方"与"购买方"间的商业互动网。在这张图谱中,绿色节点象征着购买方,而红色节点则代表了销售方。这两类节点间的紧密连线,不仅映射了双方在市场活动中的合作桥梁,还特别以不同颜色编码的线条区分了交易的规模等级:细分为1000万级别、2000万级别、5000万级别乃至8000万级别的交易纽带,以此精准描绘出商业交易的多样性和规模层次。

目录

一、结果

二、数据

三、DataToNeo4jClass1.py

四、invoice_neo4j1.py 

一、结果

二、数据

三、DataToNeo4jClass1.py

# -*- coding: utf-8 -*-
from py2neo import Node, Graph, Relationship,NodeMatcherclass DataToNeo4j(object):"""将excel中数据存入neo4j"""def __init__(self):"""建立连接"""link = Graph("http://localhost:7474", auth=("neo4j", "123456789Xx"))self.graph = link#self.graph = NodeMatcher(link)# 定义label,定义标签self.buy = 'buy'#购买方self.sell = 'sell'#销售方self.graph.delete_all()#删除已有的节点和关系、清空self.matcher = NodeMatcher(link)#定义一个matcher,一会定义关系的时候要用#NodeMatcher是从py2neo中导入的    后续帮助做匹配#下边注释掉的是一些官方的小例子,做测试的时候可以试一试##Node是从py2neo中导入的"""#创建节点node3 = Node('animal' , name = 'cat')node4 = Node('animal' , name = 'dog')  node2 = Node('Person' , name = 'Alice')node1 = Node('Person' , name = 'Bob')  #创建关系、边r1 = Relationship(node2 , 'know' , node1)    r2 = Relationship(node1 , 'know' , node3) r3 = Relationship(node2 , 'has' , node3) r4 = Relationship(node4 , 'has' , node2) #create就是实际的添加到图当中   self.graph.create(node1)self.graph.create(node2)self.graph.create(node3)self.graph.create(node4)self.graph.create(r1)self.graph.create(r2)self.graph.create(r3)self.graph.create(r4)"""def create_node(self, node_buy_key,node_sell_key):"""建立节点"""for name in node_buy_key:buy_node = Node(self.buy, name=name)#第一个参数是标签,第二个参数是名字self.graph.create(buy_node)for name in node_sell_key:sell_node = Node(self.sell, name=name)self.graph.create(sell_node)def create_relation(self, df_data):"""建立联系"""      m = 0for m in range(0, len(df_data)):#遍历数据中的每一条数据try:    print(list(self.matcher.match(self.buy).where("_.name=" + "'" + df_data['buy'][m] + "'")))print(list(self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'")))rel = Relationship(self.matcher.match(self.buy).where("_.name=" + "'" + df_data['buy'][m] + "'").first(),df_data['money'][m], self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'").first())self.graph.create(rel)except AttributeError as e:print(e, m)

四、invoice_neo4j1.py 

# -*- coding: utf-8 -*-
from dataToNeo4jClass.DataToNeo4jClass1 import DataToNeo4j
import os
import pandas as pd
#pip install py2neo==5.0b1 注意版本,要不对应不了invoice_data = pd.read_excel('./Invoice_data_Demo.xls', header=0, engine='xlrd')
#print(invoice_data)#可以先阅读下文档:https://py2neo.org/v4/index.htmldef data_extraction():"""节点数据抽取"""# 取出购买方名称到listnode_buy_key = []for i in range(0, len(invoice_data)):#遍历数据node_buy_key.append(invoice_data['购买方名称'][i])#里边有重复值node_sell_key = []for i in range(0, len(invoice_data)):node_sell_key.append(invoice_data['销售方名称'][i])#里边有重复值# 用set去除重复的发票名称node_buy_key = list(set(node_buy_key))node_sell_key = list(set(node_sell_key))# value抽出作nodenode_list_value = []for i in range(0, len(invoice_data)):for n in range(1, len(invoice_data.columns)):# 取出表头名称invoice_data.columns[i]node_list_value.append(invoice_data[invoice_data.columns[n]][i])# 去重node_list_value = list(set(node_list_value))# 将list中浮点及整数类型全部转成string类型node_list_value = [str(i) for i in node_list_value]return node_buy_key, node_sell_key,node_list_valuedef relation_extraction():"""联系数据抽取"""links_dict = {}sell_list = []money_list = []buy_list = []for i in range(0, len(invoice_data)):#遍历数据money_list.append(invoice_data[invoice_data.columns[19]][i])#金额列sell_list.append(invoice_data[invoice_data.columns[10]][i])#销售方方名称列buy_list.append(invoice_data[invoice_data.columns[6]][i])#购买方名称列# 将数据中int类型全部转成stringsell_list = [str(i) for i in sell_list]buy_list = [str(i) for i in buy_list]money_list = [str(i) for i in money_list]# 整合数据,将三个list整合成一个dictlinks_dict['buy'] = buy_listlinks_dict['money'] = money_listlinks_dict['sell'] = sell_list# 将数据转成DataFramedf_data = pd.DataFrame(links_dict)#print(df_data)return df_datarelation_extraction()
create_data = DataToNeo4j()create_data.create_node(data_extraction()[0], data_extraction()[1])
create_data.create_relation(relation_extraction())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/864606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第13次CCF计算机软件能力认证

A 跳一跳 //比赛中可以直接用万能头文件 #include<iostream> #include<cstring> #include<algorithm> #include<map> #include<vector> #include<queue> //开longlong防止爆掉int&#xff0c;int范围2e9&#xff0c;longlong范围9e18 #d…

苹果手机+AI手机概念股名单一览表

苹果智能将成为AI手机引领者&#xff0c;推动原生智能加速渗透&#xff0c;据Canlys预计2025年iOS操作系统将占据全球AI手机出货的55%。 AI手机端侧算力提升&#xff0c;将带动产业链部件升级创新 端侧算力提升或带动手机芯片及零部件升级&#xff0c;如 1&#xff09;SoC芯片&…

《廖雪峰Java教程》——Java快速入门

参考资料&#xff1a; Java快速入门 - 廖雪峰的官方网站 (liaoxuefeng.com) Java简介 Java 介于编译型语言和解释型语言之间。Java 是将代码编译成一种“字节码”&#xff0c;然后&#xff0c;针对不同平台编写虚拟机&#xff0c;不同平台的虚拟机负责加载字节码并执行&…

无人机智能追踪反制系统技术详解

随着无人机技术的飞速发展&#xff0c;无人机在各个领域的应用越来越广泛。然而&#xff0c;无人机的无序飞行和非法使用也带来了一系列安全隐患和威胁。因此&#xff0c;无人机智能追踪反制系统应运而生&#xff0c;成为维护公共安全和防止无人机滥用的重要工具。本文将详细介…

Java Lambda语法介绍

目录 一、概述 二、Lambda语法的历史 2.1 Lambda名字的含义 2.2 Lambda的历史 三、Lambda语法的核心接口 3.1 Lambda的四大核心接口 3.1.1 概述 3.1.2 Consumer 接口 3.1.3 Supplier 接口 3.1.4 Function 接口,> 3.1.5 Predicate 接口 四、Lambda的引用 4.1 概…

python脚本获取深度相机的内参矩阵depth_intrinsics和color_intrinsics

注意将代码中的分辨率改为自己项目中的分辨率 pip3 install pyrealsense2 import pyrealsense2 as rsdef print_intrinsics(stream_profile):"""打印给定流的内参"""intrinsics stream_profile.as_video_stream_profile().get_intrinsics()pri…

2024hw 蓝队面试题合集

2024hw 蓝队面试题合集 2024hw 蓝队面试题合集面试题及答案使用过哪些设备,出现误报怎么办?安全设备会出现误报的原因有哪些?安全设备出现误报后,如何辨别真实威胁并采取有效措施?如何在 hw 中分析webshell 流量特征请讲一下应急响应流程溯源有哪些思路怎么防范邮件钓鱼针…

第7天:面向对象编程(OOP)

学习目标 理解面向对象编程的基本概念掌握类和对象的定义和使用学习属性和方法的定义和使用理解继承和多态的概念学习类的特殊方法 学习内容 1. 面向对象编程基本概念 面向对象编程&#xff08;OOP&#xff09;是一种编程范式&#xff0c;使用“对象”来设计应用程序和计算…

云海中的坚固灯塔:等保测评视角下的混合云安全策略与合规性深度剖析

在数字化浪潮的推动下&#xff0c;混合云架构以其独特的优势成为企业转型升级的得力助手。然而&#xff0c;随着数据资产向云端迁移&#xff0c;安全风险与合规挑战亦如影随形&#xff0c;成为企业前行的绊脚石。等保测评作为我国网络安全的一道坚实屏障&#xff0c;对于护航云…

编程高手的必备技能:C语言函数库构建——模块化编程,提升代码重用性

1.引言 在编程的世界里&#xff0c;C语言以其高效、灵活的特点&#xff0c;一直以来都备受编程高手的青睐。然而&#xff0c;随着软件规模的不断扩大&#xff0c;如何提高代码的可维护性、可读性和重用性&#xff0c;成为了摆在程序员面前的一大挑战。本文将深入探讨C语言函数…

化妆品安全问答:个人护理产品| FDA

「个人护理品」是否都作为化妆品监管&#xff1f;是一些药物还是「药妆」&#xff1f; 人们经常使用“个人护理产品”这个术语来指代我们在药店和百货商店的健康和美容部门常见的各种各样的物品。根据法律规定&#xff0c;这些产品可能属于许多不同的类别。 用于清洁或美容的…

Gartner发布软件供应链安全指南:软件供应链攻击造成的损失将从 2023 年的460亿美元上升到2031年的1380亿美元

软件供应链安全是一个关键的风险和合规性问题&#xff0c;但大多数组织都以分散的方式处理它。缺乏一个包罗万象的框架会遗留安全漏洞。通过实施三支柱框架&#xff0c;安全和风险管理领导者可以确保广泛的保护。 主要发现 对软件供应链的攻击给组织带来重大的安全、监管和运营…

【深度学习】pytorch训练中的一个大坑

使用的命令&#xff1a;iostat -x 5 可以看到 ssd的利用率已经满了。 之前在的数据集放在了 hdd上&#xff0c;训练结果特别慢。 所以我把它移动到了ssd上&#xff0c;然后训练参数用的 resume&#xff0c; 但是&#xff01;&#xff01;&#xff01;&#xff01;它把历史记住…

【C语言】19.预处理详解

文章目录 1.预定义符号2.#define定义常量3.#define定义宏4.带有副作用的宏参数5.宏替换的规则6.宏函数的对比7.#和##7.1 #运算符7.2 ## 运算符 8.命名约定9.#undef10.命令行定义11.条件编译12.头文件的包含12.1 头⽂件被包含的⽅式12.1.1 本地⽂件包含12.1.2 库⽂件包含 12.2 嵌…

学懂C#编程:常用高级技术——学会C#的高级特性 反射

反射&#xff08;Reflection&#xff09;是C#中的一项高级特性&#xff0c;它允许程序在运行时检查和操作程序集、模块、类型等元数据信息。通过反射&#xff0c;你可以在不知道类型信息的情况下&#xff0c;动态地创建对象、调用方法、访问属性等。 反射的基本概念 反射的核…

甲骨文首次将LLMs引入数据库,集成Llama 3和Mistral,和数据库高效对话

信息时代&#xff0c;数据为王。数据库作为数据存储&管理的一种方式&#xff0c;正在以势不可挡的趋势与AI结合。 前有OpenAI 收购了数据库初创公司 Rockset&#xff0c;引发广泛关注&#xff1b;Oracle公司&#xff08;甲骨文&#xff09;作为全球最大的信息管理软件及服…

农学VR虚拟仿真情景实训教学

在农学课堂上&#xff0c;VR虚拟仿真情景的应用正逐渐成为一种创新的教学方式。 随着科技的飞速发展&#xff0c;VR技术以其沉浸式体验特点&#xff0c;让学生仿佛置身于另一个世界。在农学课堂上&#xff0c;通过VR技术&#xff0c;学生可以身临其境地感受农田的广袤&#xf…

ArtTS系统能力-窗口管理的学习(3.2)

上篇回顾&#xff1a; ArtTS系统能力-通知的学习&#xff08;3.1&#xff09; 本篇内容&#xff1a; ArtTS系统能力-窗口管理的学习&#xff08;3.2&#xff09; 一、 知识储备 1. 基本概念 窗口渲染式能力&#xff1a;指对状态栏、导航栏等系统窗口进行控制&#xff0c;减…

计算机硬件(考点篇)试题

波特率&#xff1a; 在电子通信领域&#xff0c;波特&#xff08;Baud&#xff09;即调制速率&#xff0c;指的是有效数据讯号调制载波的速率&#xff0c;即单位时间内载波调制状态变化的次数。波特&#xff08;Baud&#xff0c;单位符号&#xff1a;Bd&#xff09;。 波特率…

PHP景区旅游多商户版微信小程序系统源码

解锁景区新玩法&#xff01;​ 引言&#xff1a;一站式旅行新体验 厌倦了传统景区的单调游览&#xff1f;想要一次旅行就能体验多种风情&#xff1f;那么&#xff0c;“景区旅游多商户版”绝对是你的不二之选&#xff01;这个创新模式将景区内多个商户资源整合&#xff0c;为…