Lijst van grafen
In deze serie oefeningen gebruik je een berichten-dataset van een universiteit om te leren hoe je grafen filtert voor tijdreeksanalyse. In deze gegevensset zijn de knopen studenten en geven de randen aan dat er een bericht is verzonden van de ene student naar de andere. De huidige graaf bevat alle communicatie op alle tijdstippen.
Laten we beginnen met het analyseren van grafen waarin alleen de randen in de tijd veranderen.
De gegevensset is ingeladen in een DataFrame met de naam data. Verken die gerust in de IPython Shell. Bekijk specifiek de uitvoer van data['sender'] en data['recipient'].
Deze oefening maakt deel uit van de cursus
Gemiddelde netwerkanalyse in Python
Oefeninstructies
- Initialiseer een lege lijst met de naam
Gs. - Gebruik een
for-lus om overmonthste itereren. In de lus:- Maak een nieuwe ongerichte graaf
Gaan met de functienx.Graph(). - Voeg alle knopen toe die ooit zijn voorgekomen in de graaf. Doe dit door de methode
.add_nodes_from()opGtwee keer te gebruiken: eerst metdata['sender']als argument en daarna metdata['recipient']. - Filter de DataFrame zodat alleen de gegeven maand overblijft. Dit is al voor je gedaan.
- Voeg randen toe vanuit de gefilterde DataFrame. Gebruik hiervoor de methode
.add_edges_from()metdf_filtered['sender']endf_filtered['recipient']doorgegeven aanzip(). - Voeg
Gtoe aan de lijst met grafenGs.
- Maak een nieuwe ongerichte graaf
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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))