IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Usa una list comprehension per ottenere un elenco di nodi dal grafo T che hanno l’etichetta 'occupation' pari a 'scientist'.
    • L’output expression n è già specificata, insieme alle iterator variables n e d. Il tuo compito è completare l’iterable e la conditional expression.
    • Usa il metodo .nodes() di T per accedere ai suoi nodi e assicurati di specificare data=True per ottenere i metadati dei nodi.
    • La variabile iteratore d è un dizionario. La chiave di interesse è 'occupation' e il valore di interesse è 'scientist'.
  • Usa una list comprehension per ottenere un elenco di archi dal grafo T che 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() di T per accedere ai suoi archi. Assicurati di ottenere anche i metadati degli archi.
    • Le date sono memorizzate come oggetti datetime.date nel dizionario dei metadati d, sotto la chiave 'date'. Per accedere, ad esempio, alla data 1 gen 2009, il valore del dizionario sarebbe date(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 ____ < ____]
Modifica ed esegui il codice