Построить график Networkx из .p (выбранный) файл - PullRequest
0 голосов
/ 26 августа 2018

Я проходил курс Datacamp под названием Введение в сетевой анализ (Pt1) , и есть тестовая сеть в форме Graph / DiGraph.

В интерактивном python shell на их веб-сайте я могу набрать T.edges(), T.nodes() и т. Д. Но я понятия не имею, как загрузить ту же сеть на моем локальном компьютере.

данные предоставляются с расширением .p.Нажмите https://mega.nz/#!hs4RhbjC!ukDcb6pDiJSEoAGy-WiosfcMgP62qiQgAAAAAAAAAAA) для доступа к файлу.

 import networkx as nx
 dg = pickle.load(open('../data/tw.p'))
 print (dg.edges())

Это читает ошибку

 Traceback (most recent call last):
  File "C:\Code\DataCamp-master\21-network-analysis-in-python-(part-1)\01-introduction-to-networks\02-queries-on-a-graph.py", line 22, in <module>
    dg = pickle.load(open('../data/tw.p'))
  File "C:\ProgramData\Anaconda3\lib\encodings\cp1251.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 4933: character maps to <undefined>

@

   T = nx.read_gpickle('../folder/tw.p')

Когда я пытаюсь через nx.read_gpickle Я получаю это:

   Traceback (most recent call last):
  File "C:\Code\DataCamp-master\21-network-analysis-in-python-(part-1)\01-introduction-to-networks\02-queries-on-a-graph.py", line 21, in <module>
    print (T.nodes())
  File "C:\ProgramData\Anaconda3\lib\site-packages\networkx\classes\graph.py", line 719, in nodes
    nodes = NodeView(self)
  File "C:\ProgramData\Anaconda3\lib\site-packages\networkx\classes\reportviews.py", line 168, in __init__
    self._nodes = graph._node
AttributeError: 'DiGraph' object has no attribute '_node'

Ниже показано, как это должно выглядеть, и я не знаю, как это сделать так:

Directed Graph from the provided file.

The Twitter network has been loaded as `T`.

В [1] type(T)

networkx.classes.digraph.DiGraph

T.nodes(data=True)[:10]
[(1, {'category': 'I', 'occupation': 'scientist'}),
 (3, {'category': 'P', 'occupation': 'politician'}),
 (4, {'category': 'D', 'occupation': 'celebrity'}),
 (5, {'category': 'I', 'occupation': 'politician'}),
 (6, {'category': 'D', 'occupation': 'politician'}),
 (7, {'category': 'D', 'occupation': 'scientist'}),
 (8, {'category': 'I', 'occupation': 'celebrity'}),
 (9, {'category': 'D', 'occupation': 'celebrity'}),
 (10, {'category': 'I', 'occupation': 'celebrity'}),
 (11, {'category': 'I', 'occupation': 'celebrity'})]

Кажется, я не понимаю основную идею о том, как реализовать преобразование файла .p в Graph.

1 Ответ

0 голосов
/ 04 июня 2019

Я также столкнулся с той же проблемой загрузки файла .p, который использовался в курсе datacamp в моей локальной системе.

$pip freeze | grep networkx

Используя приведенную выше команду в сценарии практики datacamp, я заметил, что версия сетей, которую они используют в курсе, - networkx == 1.1 .Возвращение к этой версии помогло мне решить следующую ошибку, которую вы получаете.

AttributeError: 'DiGraph' object has no attribute '_node'.

Надеюсь, это поможет.Спасибо

...