2017-02-21 630 views
0

這是我認爲是一個非常簡單的問題。我試圖重新此頁上的圖(向下滾動了一下):使用py2neo從CSV文件創建圖形的正確語法

https://linkurio.us/visualizing-network-donald-trump/

有代碼此頁面上創建圖形,但我想用py2neo等同。我已經使用類似於下面的代碼的語法在NetworkX中成功創建了這些相同的圖表,但下面的代碼生成了一些完全不同的代碼。我希望得到的代碼能夠從CSV文件中以適當的py2neo形式創建適當的圖形。請注意,我已經搜索了答案,並且我已經查看了此鏈接,並且不確定我遵循:Creating neo4j graph database from csv file using py2neo

下面的代碼工作正常(否則),我使用py2neo和Neo4j(CE)的最新版本。我更喜歡簡單的代碼(生成器,列表解析等,可能不是最好的),但會採取我能得到的任何東西。很顯然,我正在閱讀一個CSV文件,讀出名爲「組織」,「人員」和「連接」的列,並使用這些值創建顯示連接的圖形,如上述鏈接。謝謝!我使用

代碼:

def readCSV_forNeo4j_Trump(path): 
    with open(path + '/Trump/TrumpWorldData_Person-Org.csv', ncoding='utf8') as csvfile: 
     reader = csv.DictReader(csvfile) 
     for row in reader: 
      Organization = row['Organization'] 
      Person = row['Person'] 
      Connection = row['Connection'] 
      Person_Node = Node("Person", name=Person) 
      graph.create(Person_Node) 
      Org_Node = Node("Organization", name=Organization) 
      graph.create(Org_Node) 
      Person_Org = Relationship(Person_Node, Connection, Org_Node) 
      graph.create(Person_Org) 

回答

1

您可以使用暗號從py2neo。

def readCSV_forNeo4j_Trump(path): 
    with open(path + '/Trump/TrumpWorldData_Person-Org.csv', ncoding='utf8') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     Organization = row['Organization'] 
     Person = row['Person'] 
     Connection = row['Connection'] 
     graph.run("MERGE (p:Person{name:{name}}) 
     MERGE (o:Organization{name:{organization}}) 
     CREATE (p)-[:IS_CONNECTED{type:{relationship}}]->(o)", 
     name=Person, organization=Organization , relationship = Connection) 

我已經寫了我頭頂的查詢...你可以從指令中複製密碼並從py2neo運行它。

+0

謝謝,托馬斯,做到了。一個注意,py2neo 3沒有密碼構造函數。而不是使用cypher = graph.cypher,然後cypher.execute(與py2neo 2一樣),只需調用graph.run()(不需要實例化一個密碼對象,再次感謝! – starconsult

+0

謝謝你。注意到它很慢,有什麼辦法可以加快速度嗎?我嘗試了graph.schema.create_index,但它似乎沒有什麼區別。 –