LoslegenKostenlos loslegen

Abfragen in einem Graphen

Nachdem du nun einige grundlegende Eigenschaften des Graphen kennst und mit den Zeichenfunktionen von NetworkX geübt hast, Teile davon zu visualisieren, ist es Zeit zu erkunden, wie du Knoten und Kanten abfragen kannst. Konkret suchst du nach „interessanten Knoten“ und „interessanten Kanten“. Dafür nutzt du die Methoden .nodes() und .edges(), die Eric im Video gezeigt hat. Die Methode .nodes() gibt einen iterierbaren Node View zurück, während .edges() einen iterierbaren Edge View liefert, in dem jedes Tupel die Knoten der jeweiligen Kante enthält. Denk daran: Wenn du das Schlüsselwortargument data=True übergibst, erhältst du außerdem die zugehörigen Metadaten der Knoten und Kanten.

Du schreibst List Comprehensions, um diese Abfragen kompakt in einer Zeile zu formulieren. Wenn du eine Auffrischung zu List Comprehensions brauchst, sieh dir Teil 2 des DataCamp-Kurses „Python Data Science Toolbox“ an. Hier ist das „Rezept“ für eine List Comprehension:

[ Ausdruck for Iteratorvariable in Iterable if Bedingung ].

Du musst das _Iterable_ und die _Bedingung_ ausfüllen. Probiere deine Lösung gern in der IPython Shell am Graphen aus, bevor du sie einreichst.

Diese Übung ist Teil des Kurses

Einstieg in die Netzwerkanalyse mit Python

Kurs anzeigen

Anleitung zur Übung

  • Verwende eine List Comprehension, um eine Liste von Knoten aus dem Graphen T zu erhalten, die das Label 'occupation' mit dem Wert 'scientist' haben.
    • Der Ausdruck n ist bereits vorgegeben, ebenso die Iteratorvariablen n und d. Deine Aufgabe ist es, das Iterable und die Bedingung zu vervollständigen.
    • Verwende die Methode .nodes() von T, um auf die Knoten zuzugreifen, und gib data=True an, um die Metadaten der Knoten zu erhalten.
    • Die Iteratorvariable d ist ein Dictionary. Der relevante Schlüssel ist 'occupation', der relevante Wert ist 'scientist'.
  • Verwende eine List Comprehension, um eine Liste von Kanten aus dem Graphen T zu erhalten, die seit mindestens 6 Jahren bestehen, d. h. von vor dem 1. Jan. 2010.
    • Auch hier sollst du das Iterable und die Bedingung vervollständigen.
    • Verwende die Methode .edges() von T, um auf die Kanten zuzugreifen. Achte darauf, auch hier die Metadaten zu erhalten.
    • Die Daten sind als datetime.date-Objekte im Metadaten-Dictionary d unter dem Schlüssel 'date' gespeichert. Um beispielsweise auf den 1. Jan. 2009 zuzugreifen, wäre der Dictionary-Wert date(2009, 1, 1).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 ____ < ____]
Code bearbeiten und ausführen