Requêtes sur un graphe
Maintenant que vous connaissez quelques propriétés de base du graphe et que vous avez pratiqué l'utilisation des fonctions de dessin de NetworkX pour en visualiser des composantes, il est temps d'explorer comment l'interroger pour obtenir des nœuds et des arêtes. Plus précisément, vous allez rechercher des « nœuds d'intérêt » et des « arêtes d'intérêt ». Pour y arriver, vous utiliserez les méthodes .nodes() et .edges() présentées par Eric dans la vidéo. La méthode .nodes() retourne un objet itérable de type NodeView, tandis que la méthode .edges() retourne un objet itérable de type EdgeView, dans lequel chaque tuple indique les nœuds présents sur cette arête. Rappelez-vous que le passage de l'argument nommé data=True à ces méthodes permet aussi de récupérer les métadonnées associées aux nœuds et aux arêtes.
Vous écrirez des compréhensions de liste pour construire efficacement ces requêtes sur une seule ligne. Pour un rappel sur les compréhensions de liste, consultez la Partie 2 du cours Python Data Science Toolbox de DataCamp. Voici la « recette » d'une compréhension de liste :
[ expression de sortie for variable d'itération in itérable if expression prédicative ].
Vous devez remplir l'itérable et l'expression prédicative. N'hésitez pas à prototyper votre réponse en explorant le graphe dans l'IPython Shell avant de soumettre votre solution.
Cette activité fait partie du cours
Introduction à l'analyse des réseaux en Python
Instructions de l’exercice
- Utilisez une compréhension de liste pour obtenir une liste de nœuds du graphe
Tdont l'étiquette'occupation'est'scientist'.- L'expression de sortie
na été fournie, ainsi que les variables d'itérationnetd. Votre tâche est de remplir l'itérable et l'expression conditionnelle. - Utilisez la méthode
.nodes()deTpour accéder à ses nœuds, et assurez-vous d'indiquerdata=Trueafin d'obtenir les métadonnées des nœuds. - La variable d'itération
dest un dictionnaire. La clé qui nous intéresse ici est'occupation'et la valeur recherchée est'scientist'.
- L'expression de sortie
- Utilisez une compréhension de liste pour obtenir une liste d'arêtes du graphe
Tqui étaient formées depuis au moins 6 ans, c.-à-d. d'avant le 1er janv. 2010.- Votre tâche, encore une fois, est de remplir l'itérable et l'expression conditionnelle.
- Utilisez la méthode
.edges()deTpour accéder à ses arêtes. Assurez-vous aussi d'obtenir les métadonnées des arêtes. - Les dates sont stockées comme objets
datetime.datedans le dictionnaire de métadonnéesd, sous la clé'date'. Pour accéder à la date du 1er janv. 2009, par exemple, la valeur du dictionnaire seraitdate(2009, 1, 1).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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 ____ < ____]