Liste von Graphen
In dieser Übungsreihe verwendest du einen Messaging-Datensatz einer Hochschule, um zu lernen, wie man Graphen für Zeitreihenanalysen filtert. In diesem Datensatz sind die Knoten Studierende, und die Kanten stehen für Nachrichten, die von einer Person an eine andere gesendet werden. Der Graph in seiner aktuellen Form umfasst alle Kommunikation zu allen Zeitpunkten.
Lass uns damit beginnen, die Graphen zu analysieren, bei denen sich nur die Kanten über die Zeit verändern.
Der Datensatz wurde in einen DataFrame namens data geladen. Schau ihn dir gern in der IPython-Shell an. Sieh dir insbesondere die Ausgaben von data['sender'] und data['recipient'] an.
Diese Übung ist Teil des Kurses
Fortgeschrittene Netzwerkanalyse in Python
Anleitung zur Übung
- Initialisiere eine leere Liste namens
Gs. - Verwende eine
for-Schleife, um übermonthszu iterieren. Innerhalb der Schleife:- Erzeuge einen neuen ungerichteten Graphen namens
Gmit der Funktionnx.Graph(). - Füge alle Knoten hinzu, die jemals aufgetaucht sind. Verwende dafür die Methode
.add_nodes_from()aufGzweimal: zuerst mitdata['sender']als Argument und dann mitdata['recipient']. - Filtere den DataFrame so, dass nur der gegebene Monat enthalten ist. Das wurde bereits für dich erledigt.
- Füge Kanten aus dem gefilterten DataFrame hinzu. Verwende dazu die Methode
.add_edges_from()mitdf_filtered['sender']unddf_filtered['recipient'], übergeben anzip(). - Hänge
Gan die Liste der GraphenGsan.
- Erzeuge einen neuen ungerichteten Graphen namens
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
import networkx as nx
months = range(4, 11)
# Initialize an empty list: Gs
Gs = []
for month in months:
# Instantiate a new undirected graph: G
G = ____
# Add in all nodes that have ever shown up to the graph
____
____
# Filter the DataFrame so that there's only the given month
df_filtered = data[data['month'] == month]
# Add edges from filtered DataFrame
____
# Append G to the list of graphs
____
print(len(Gs))