2017-02-21 19 views
0

Это то, что я считаю очень простым вопросом. Я пытаюсь воссоздать график на этой странице (прокрутите немного вниз):Правильный синтаксис для создания графика из файла CSV с использованием py2neo

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

Существует код, чтобы создать график на этой странице, но я пытаюсь использовать py2neo эквивалент. Я успешно создал эти же графики в NetworkX, используя синтаксис, похожий на приведенный ниже код, но приведенный ниже код генерирует нечто совершенно другое. Я надеюсь получить код, который создаст правильный граф в правильной форме py2neo из файлов CSV. Обратите внимание, что я искал ответы, и я уже просмотрел эту ссылку и не уверен, что следую: 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) 

Я написал запрос верхней части головы ... вы можете скопировать cypher из инструкций и запустить его из py2neo.

+0

Спасибо, Томаз, это сделал трюк. Одно замечание: py2neo 3 не имеет конструктора cypher. Вместо использования cypher = graph.cypher, тогда cypher.execute (как и для py2neo 2), один просто вызывает graph.run() (нет необходимости создавать экземпляр объекта cypher. Еще раз спасибо! – starconsult

+0

Спасибо за это. заметил, что он довольно медленный. Есть ли способ ускорить это? Я пробовал graph.schema.create_index, но, похоже, это не имеет значения. –