Zapytania na grafie
Teraz, gdy znasz już podstawowe właściwości grafu i wiesz, jak korzystać z narzędzi do wizualizacji w NetworkX, czas sprawdzić, jak wykonywać zapytania dotyczące węzłów i krawędzi. Będziesz szukać „węzłów zainteresowania" i „krawędzi zainteresowania". Użyjesz do tego metod .nodes() i .edges(), które omówił Eric w filmie. Metoda .nodes() zwraca iterowalny widok węzłów, a metoda .edges() – iterowalny widok krawędzi, gdzie każda krotka zawiera węzły połączone daną krawędzią. Pamiętaj, że przekazanie argumentu data=True pozwala pobrać metadane powiązane z węzłami i krawędziami.
Do budowania tych zapytań w jednej linii użyjesz list składanych. Jeśli chcesz odświeżyć sobie tę technikę, zajrzyj do części 2 kursu DataCamp Python Data Science Toolbox. Oto schemat listy składanej:
[ wyrażenie wyjściowe for zmienna iteratora in iterowalny if wyrażenie warunkowe ].
Musisz uzupełnić _iterowalny_ oraz _wyrażenie warunkowe_. Możesz eksperymentować z grafem w powłoce IPython przed przesłaniem odpowiedzi.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy sieci w Pythonie
Instrukcje do ćwiczenia
- Użyj listy składanej, aby uzyskać listę węzłów grafu
Tz etykietą'occupation'równą'scientist'.- Wyrażenie wyjściowe
nzostało już podane, podobnie jak zmienne iteratoranid. Twoim zadaniem jest uzupełnienie iterowalnego oraz wyrażenia warunkowego. - Użyj metody
.nodes()obiektuT, aby uzyskać dostęp do węzłów, i pamiętaj o podaniudata=True, aby pobrać metadane węzłów. - Zmienna iteratora
djest słownikiem. Interesujący cię klucz to'occupation', a wartość to'scientist'.
- Wyrażenie wyjściowe
- Użyj listy składanej, aby uzyskać listę krawędzi grafu
T, które istnieją od co najmniej 6 lat, tzn. powstały przed 1 stycznia 2010.- Tym razem również uzupełnij iterowalny oraz wyrażenie warunkowe.
- Użyj metody
.edges()obiektuT, aby uzyskać dostęp do krawędzi. Pamiętaj też o pobraniu metadanych krawędzi. - Daty są przechowywane jako obiekty
datetime.datew słowniku metadanychd, pod kluczem'date'. Na przykład, aby uzyskać dostęp do daty 1 stycznia 2009, wartość słownika todate(2009, 1, 1).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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 ____ < ____]