Query su un grafo
Ora che conosci alcune proprietà di base del grafo e hai fatto pratica con gli strumenti di disegno di NetworkX per visualizzarne i componenti, è il momento di esplorare come interrogarlo per nodi e archi. In particolare, cercherai "nodi di interesse" e "archi di interesse". Per farlo, userai i metodi .nodes() e .edges() che Eric ha presentato nel video. Il metodo .nodes() restituisce un iterabile di tipo Node view, mentre .edges() restituisce un iterabile di tipo edge view, in cui ogni tupla mostra i nodi presenti su quell’arco. Ricorda che passando l’argomento data=True a questi metodi ottieni anche i metadati associati a nodi e archi.
Scriverai delle list comprehension per costruire in modo efficace queste query in una sola riga. Se ti serve un ripasso sulle list comprehension, consulta la Parte 2 del corso Python Data Science Toolbox di DataCamp. Ecco la “ricetta” di una list comprehension:
[ output expression for iterator variable in iterable if predicate expression ].
Devi completare l’_iterable_ e la _predicate expression_. Sentiti libero di prototipare la tua risposta esplorando il grafo nella IPython Shell prima di Invia risposta.
Questo esercizio fa parte del corso
Introduzione all'analisi delle reti in Python
Istruzioni dell'esercizio
- Usa una list comprehension per ottenere un elenco di nodi dal grafo
Tche hanno l’etichetta'occupation'pari a'scientist'.- L’output expression
nè già specificata, insieme alle iterator variablesned. Il tuo compito è completare l’iterable e la conditional expression. - Usa il metodo
.nodes()diTper accedere ai suoi nodi e assicurati di specificaredata=Trueper ottenere i metadati dei nodi. - La variabile iteratore
dè un dizionario. La chiave di interesse è'occupation'e il valore di interesse è'scientist'.
- L’output expression
- Usa una list comprehension per ottenere un elenco di archi dal grafo
Tche si sono formati da almeno 6 anni, cioè precedenti al 1 gen 2010.- Anche qui devi completare l’iterable e la conditional expression.
- Usa il metodo
.edges()diTper accedere ai suoi archi. Assicurati di ottenere anche i metadati degli archi. - Le date sono memorizzate come oggetti
datetime.datenel dizionario dei metadatid, sotto la chiave'date'. Per accedere, ad esempio, alla data 1 gen 2009, il valore del dizionario sarebbedate(2009, 1, 1).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Use a list comprehension to get the nodes of interest: noi
noi = [n for n, d in ____ if d['____'] == '____']
# Use a list comprehension to get the edges of interest: eoi
eoi = [(u, v) for u, v, d in ____ if ____ < ____]