实战:使用py2neo和pandas处理海事数据

本文介绍了如何使用Excel创建ships.csv文件,展示了如何通过ship_ShipName等属性创建ship、COMPANY和COUNTRY/REGION节点,并将数据导入Neo4j数据库。重点讲解了createNode和createRelationship函数的使用,以及如何利用csv数据进行节点关系的建立。

海事数据的格式

标签:
ship_ShipName,ship_MMSI,ship_BuildDate,ship_ShipTypeGroup,ship_ShipTypeLevel5SubGroup,ship_ShipType,ship_GroupCompany,ship_GroupCompanyCountry,ship_OperatorCompany,ship_OperatorCompanyCountry,ship_CountryOfEconomicBenefit,ship_DeadWeight,ship_GrossTonnage,ship_LengthLOA,ship_MouldWidth,ship_Draught,ship_LiquidCapacity

首先使用excel根据标签中的如下五个类别创建三元组形成ships.csv文件:

  1. ship_GroupCompany,
  2. ship_GroupCompanyCountry,
  3. ship_OperatorCompany,
  4. ship_OperatorCompanyCountry,
  5. ship_CountryOfEconomicBenefit

ships.csv文件的格式如下图:
在这里插入图片描述
有了三元组和原表格我们可以很方便添加数据到neo4j的数据库中。

函数

  1. createNode:在neo4j中创建节点
  2. createRelationship:在neo4j中创建节点的关系
  3. matchNode:在neo4j中匹配数据
  4. get_ship_properties:得到所有船的属性
  5. csv2df:将csv转为df
  6. df2neo:将df(从df中提取的数据)转为neo4j

代码

from py2neo import *
import os
import pandas as pd
import numpy as np

# 数据库
graph = Graph('http://localhost:7474', username='neo4j', password='myneo4j')


# 创建节点
def createNode(m_graph, m_label, m_attrs):
    # m_n = "_.name=" + "\'" + m_attrs['name'] + "\'"
    m_n = None
    if m_label == 'SHIP':
        m_n = "_.MMSI=" + "\'" + m_attrs['MMSI'] + "\'"
    elif m_label == 'COMPANY' or m_label == 'COUNTRY/REGION':
        m_n = "_.Name=" + "\'" + m_attrs['Name'] + "\'"
    matcher = NodeMatcher(m_graph)
    re_value = matcher.match(m_label).where(m_n).first()
    print(re_value)
    if re_value is None:
        m_node = Node(m_label, **m_attrs)
        n = graph.create(m_node)
        return n
    # print('Fail to create Node!!')
    return None


# 创建两个节点的关系,如果节点不存在就不创建关系
def createRelationship(m_graph, m_label1, m_attrs1, m_label2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值