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
Övningsinstruktioner
- Använd en listuppfattning för att skapa en lista med noder från grafen
Tsom har etiketten'occupation'med värdet'scientist'.- Utdatauttrycket
när redan ifyllt, liksom iteratorvariablernanochd. Din uppgift är att fylla i det iterbara objektet och villkorsuttrycket. - Använd metoden
.nodes()påTför att komma åt dess noder, och se till att angedata=Truefö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'.
- Utdatauttrycket
- Använd en listuppfattning för att skapa en lista med kanter från grafen
Tsom 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()påTför att komma åt dess kanter. Se till att även hämta metadata för kanterna. - Datumen lagras som
datetime.date-objekt i metadataordbokend, under nyckeln'date'. För att till exempel komma åt datumet 1 jan 2009 skulle ordboksvärdet varadate(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 ____ < ____]