Представлять отношения между объектами, использующими python3

giorgioW спросил: 03 февраля 2018 в 12:50 в: python

Я хочу представить серию данных, используя библиотеку networkx для Python3, но я не знаю, как подойти к проблеме.

В принципе у меня есть relation между двумя entities, который находится в файле csv, называемом nations.csv. Это выглядит так:

China, Economicaid, Egypt
China, Economicaid, Indonesia
USSR, Economicaid, Cuba 
USSR, Economicaid, India
USSR, Economicaid, Poland
UK, Economicaid, India 
UK, Economicaid, Jordan
USA, Economicaid, Brazil

Понимая, что первая строка является одной из сущностей, которая связана с третьей строкой (сущность 2) между второй:

Я проанализировал файл csv для хранения каждой из строк в словаре, как показано ниже:

d = {}
d['entity1'] = []
d['relation'] = []
d['entity2'] = []dictReader = csv.DictReader(open('nations.csv', 'rt'), fieldnames = 
['entity1', 'relation', 'entity2'], delimiter = ',', quotechar = '"')for row in dictReader:
    for key in row:
        d[key].append(row[key])

То, что мне удалось сделать, это построить узлы с помощью функции add_node(), как показано в следующем примере:

import csv
import networkx as nx
import matplotlib.pyplot as pltd = {}
d['entity1'] = []
d['relation'] = []
d['entity2'] = []dictReader = csv.DictReader(open('nations.csv', 'rt'), fieldnames = ['entity1', 'relation', 'entity2'], delimiter = ',', quotechar = '"')for row in dictReader:
    for key in row:
        d[key].append(row[key])print()for i in range (1, len(d['entity1'])):
    r.append(d['entity1'][i])for k in range (1, len(d['entity2'])):
    o.append(d['entity2'][k])G=nx.Graph()for j in range(len(r)):
    G.add_node(r[j])
    G.add_node(o[j])nx.draw_networkx(G, with_labels = True, node_size = 500)plt.show()

Но проблема возникает, когда я хочу представлять ребра между узлами, потому что это не только сам ребро, но и его собственный ярлык со значением.


0 ответов