目錄
neo4j的下載
neo4j的介紹
neo4j簡介
neo4j樣本項目介紹
neo4j修改密碼
連接GraphXR
用Python往neo4j導(dǎo)入Excel數(shù)據(jù)
代碼部分
?關(guān)于創(chuàng)建結(jié)點:
關(guān)于創(chuàng)建關(guān)系:
結(jié)束
neo4j的下載
neo4j下載網(wǎng)址:Neo4j Download Center - Graph Database & Analytics
點擊紅框內(nèi)的Download Neo4j Desktop
填寫信息后點擊Download Desktop,即可下載安裝包
安裝步驟較為簡單,此處省略
neo4j的介紹
neo4j簡介
neo4j是一個高性能的,NOSQL圖形數(shù)據(jù)庫,它將結(jié)構(gòu)化數(shù)據(jù)存儲在網(wǎng)絡(luò)上而不是表中。它是一個嵌入式的、基于磁盤的、具備完全的事務(wù)特性的Java持久化引擎,但是它將結(jié)構(gòu)化數(shù)據(jù)存儲在網(wǎng)絡(luò)(從數(shù)學(xué)角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟數(shù)據(jù)庫的所有特性。程序員工作在一個面向?qū)ο蟮?、靈活的網(wǎng)絡(luò)結(jié)構(gòu)下而不是嚴(yán)格、靜態(tài)的表中——但是他們可以享受到具備完全的事務(wù)特性、企業(yè)級的數(shù)據(jù)庫的所有好處。
Neo4j因其嵌入式、高性能、輕量級等優(yōu)勢,越來越受到關(guān)注。
neo4j樣本項目介紹
紅框內(nèi)的代表Projects,里面包含了所有的項目文件,剛下載好neo4j后,neo4j會給一個樣本項目(Example Project),這個項目里的圖數(shù)據(jù)庫存儲的是美國電影和影視演員之間的知識圖譜關(guān)系:
?
??
neo4j修改密碼
這個是圖數(shù)據(jù)庫的操作頁面,其中比較重要的是下圖紅框內(nèi)的內(nèi)容,我們在以后的連接python和GraphXR時需要用到bolt連接、用戶名neo4j和密碼,密碼的話修改過程如下:
先點擊第一個紅框的空白處,就會彈出圖數(shù)據(jù)庫的詳細(xì)信息,然后里面有重新設(shè)置密碼的地方,輸入密碼點擊Apply就行,這里我設(shè)置的是123456789
?
我們點擊start啟動圖數(shù)據(jù)庫
?
點擊Open打開?
?
彈出這個頁面:
?紅框里的就是用于連接的bolt連接和用戶名neo4j,密碼我們之前已經(jīng)修改為了123456789
連接GraphXR
neo4j數(shù)據(jù)庫查看數(shù)據(jù):
紅框標(biāo)注的三個都可以點擊,點擊Movie就是查看Movie類的結(jié)點,Person就是Person類的結(jié)點,*169是不論類別的結(jié)點,?我們點擊查看時圖中限制了大?。↙IMIT 25),指的是查看25個結(jié)點的關(guān)系圖譜,我們可以更改LIMIT后面的值,也可以直接刪除LIMIT:
如果查看的數(shù)據(jù)量很大會造成neo4j卡頓,我推薦用GraphXR來進(jìn)行查看
網(wǎng)址:上海圖客科技有限公司
點擊GraphXR試用,因為我已經(jīng)注冊過賬號,所以可以直接進(jìn)入,新人第一次點擊試用后可以注冊賬號,然后免費(fèi)試用,試用時間沒說多少天......
?我們點擊新建:
項目名稱可以自己填,然后勾選配置neo4j實例,主機(jī)填localhost,端口就是7687,用戶名就是neo4j,密碼我們設(shè)置的是123456789,點擊確認(rèn)就行。(注意連接neo4j時neo4j的數(shù)據(jù)庫要保持開著的狀態(tài),不能關(guān)了)?
?按照上圖操作,點擊提取所有:
其中類別和關(guān)系是主要的兩個提取操作,我們可以都提取出來查看(如上圖):
用Python往neo4j導(dǎo)入Excel數(shù)據(jù)
我們可以把Excel文件和python文件放在一個文件夾里(便于提取和操作):
?其中我把Excel文件轉(zhuǎn)換成了csv文件,一個是python對csv文件提取和操作都更快,另一個是我在操作Excel文件時會有一些編碼錯誤,所以我用csv文件來導(dǎo)入數(shù)據(jù)
代碼部分
下面是test1.py的代碼:
from py2neo import Graph, Node, Relationship
import csv
g = Graph("bolt://localhost:7687", user="neo4j", password="123456789", name="neo4j") # 連接數(shù)據(jù)庫
reader = csv.reader(open('kg-table-data.csv', 'r', encoding='utf-8')) # 讀取csv文件
reader1 = csv.reader(open('kg-table-data-1.csv', 'r', encoding='utf-8')) # 讀取csv文件
for item in reader: # 讀取每一行
if reader.line_num == 1: # 去除第一行
continue
print("當(dāng)前行數(shù):", reader.line_num, "當(dāng)前行內(nèi)容:", item) # 打印當(dāng)前行數(shù)和當(dāng)前行內(nèi)容
# 創(chuàng)建起始節(jié)點,并添加屬性
start_node = Node('Company', name=item[0]) # 創(chuàng)建節(jié)點
start_node['role'] = '競買方' # 添加屬性
g.merge(start_node, 'Company', 'name') # 以name屬性為主鍵,如果存在則更新,不存在則創(chuàng)建
# 創(chuàng)建結(jié)束節(jié)點,并添加屬性
end_node = Node('Company', name=item[4]) # 創(chuàng)建節(jié)點
end_node['role'] = '出讓方' # 添加屬性
g.merge(end_node, 'Company', 'name') # 以name屬性為主鍵,如果存在則更新,不存在則創(chuàng)建
# 為兩個節(jié)點之間添加關(guān)系以及關(guān)系的屬性
relationship_type = '競買' # 關(guān)系類型
relationship_properties = { # 關(guān)系屬性
'交易標(biāo)的': item[1],
'首次披露日': item[2],
'交易總價值(本幣/萬元)': item[3]
}
relationship = Relationship(start_node, relationship_type, end_node, **relationship_properties) # 創(chuàng)建關(guān)系
g.merge(relationship) # 以關(guān)系為主鍵,如果存在則更新,不存在則創(chuàng)建
先在python終端或者cmd里面安裝py2neo庫:
pip install py2neo
代碼詳解在注釋里已經(jīng)寫得比較詳細(xì)了,其中如果給結(jié)點添加屬性的話,可以這樣寫:
start_node['role'] = '競買方' # 添加屬性
中括號里是結(jié)點的屬性,后面的賦值是屬性的一個具體表現(xiàn),role和競買方這兩個單詞是可以換成其他東西的。
關(guān)系屬性的添加的話可以這樣寫:
relationship_properties = { # 關(guān)系屬性
'交易標(biāo)的': item[1],
'首次披露日': item[2],
'交易總價值(本幣/萬元)': item[3]
# 添加一個關(guān)系屬性:
'交易地點':item[5]
}
著重講一下item,這個是在for循環(huán)當(dāng)中讀取每一行的數(shù)組變量,它讀取的是文件的每一行:
for item in reader: # 讀取每一行
if reader.line_num == 1: # 去除第一行
continue
print("當(dāng)前行數(shù):", reader1.line_num, "當(dāng)前行內(nèi)容:", item) # 打印當(dāng)前行數(shù)和當(dāng)前行內(nèi)容
根據(jù)我那個表格的話,item[0]是競買方,item[4]是出讓方,item[1],item[2],item[3]分別是交易標(biāo)的、首次披露日、交易總價值(本幣/萬元)。
?關(guān)于創(chuàng)建結(jié)點:
start_node = Node('Company', name=item[0]) # 創(chuàng)建節(jié)點
start_node['role'] = '競買方' # 添加屬性
g.merge(start_node, 'Company', 'name') # 以name屬性為主鍵,如果存在則更新,不存在則創(chuàng)建
其中Company是這個結(jié)點的一個大屬性(大類),name=item[0]就是根據(jù)item[0]來為它創(chuàng)建名稱,role就是它的一個小屬性:競買方,g.merge()這個函數(shù)表示如果沒有這個結(jié)點,就創(chuàng)建這個結(jié)點并添加,如果有這個結(jié)點就不重復(fù)添加了。
關(guān)于創(chuàng)建關(guān)系:
# 為兩個節(jié)點之間添加關(guān)系以及關(guān)系的屬性
relationship_type = '競買' # 關(guān)系類型
relationship_properties = { # 關(guān)系屬性
'交易標(biāo)的': item[1],
'首次披露日': item[2],
'交易總價值(本幣/萬元)': item[3]
}
relationship = Relationship(start_node, relationship_type, end_node, **relationship_properties) # 創(chuàng)建關(guān)系
g.merge(relationship) # 以關(guān)系為主鍵,如果存在則更新,不存在則創(chuàng)建
關(guān)系的大類別為:競買,關(guān)系的屬性在relationship_properties里存儲,item是讀取每一行之后的數(shù)據(jù),根據(jù)數(shù)組下標(biāo)填進(jìn)去就行,如果要添加屬性就在relationship_properties里面繼續(xù)添加,格式為:文章來源:http://www.zghlxwxcb.cn/news/detail-810428.html
# 你要添加的屬性
'要添加的屬性': item[5] # item[]中括號里面的數(shù)字看csv表格里的進(jìn)行添加
結(jié)束
以上就是neo4j用python導(dǎo)入Excel或csv數(shù)據(jù)的方法,謝謝大家!文章來源地址http://www.zghlxwxcb.cn/news/detail-810428.html
到了這里,關(guān)于neo4j用python導(dǎo)入Excel數(shù)據(jù)的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!