Kom igångKom igång gratis

Frågor mot en graf

Nu när du känner till några grundläggande egenskaper hos grafen och har övat på att använda NetworkX ritfunktioner för att visualisera dess komponenter är det dags att utforska hur du kan ställa frågor mot den för att hitta noder och kanter. Du ska leta efter "noder av intresse" och "kanter av intresse". För det använder du metoderna .nodes() och .edges() som Eric gick igenom i videon. Metoden .nodes() returnerar en iterabel med nodvyer, medan .edges() returnerar en iterabel med kantvyer där varje tupel visar de noder som ingår i kanten. Kom ihåg att du kan skicka in nyckelordsargumentet data=True i dessa metoder för att hämta tillhörande metadata för noderna och kanterna.

Du skriver listuppfattningar för att bygga dessa frågor effektivt på en enda rad. Behöver du fräscha upp minnet om listuppfattningar kan du läsa del 2 av DataCamps kurs Python Data Science Toolbox. Här är mönstret för en listuppfattning:

[ utdatauttryck for iteratorvariabel in itererbart objekt if predikatuttryck ].

Din uppgift är att fylla i _itererbart objekt_ och _predikatuttryck_. Testa gärna din lösning genom att utforska grafen i IPython Shell innan du skickar in ditt svar.

Den här övningen är en del av kursen

Introduktion till nätverksanalys i Python

Visa kurs

Övningsinstruktioner

  • Använd en listuppfattning för att skapa en lista med noder från grafen T som har etiketten 'occupation' med värdet 'scientist'.
    • Utdatauttrycket n är redan ifyllt, liksom iteratorvariablerna n och d. Din uppgift är att fylla i det iterbara objektet och villkorsuttrycket.
    • Använd metoden .nodes()T för att komma åt dess noder, och se till att ange data=True för att hämta metadata för noderna.
    • Iteratorvariabeln d är en ordbok. Nyckeln av intresse är 'occupation' och värdet av intresse är 'scientist'.
  • Använd en listuppfattning för att skapa en lista med kanter från grafen T som funnits i minst 6 år, det vill säga från före 1 jan 2010.
    • Din uppgift är återigen att fylla i det iterbara objektet och villkorsuttrycket.
    • Använd metoden .edges()T för att komma åt dess kanter. Se till att även hämta metadata för kanterna.
    • Datumen lagras som datetime.date-objekt i metadataordboken d, under nyckeln 'date'. För att till exempel komma åt datumet 1 jan 2009 skulle ordboksvärdet vara date(2009, 1, 1).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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 ____ < ____]
Redigera och kör kod