Requêtes sur un graphe
Maintenant que vous connaissez quelques propriétés de base du graphe et que vous avez utilisé les outils de dessin de NetworkX pour en visualiser des composants, 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 cela, vous utiliserez les méthodes .nodes() et .edges() présentées par Eric dans la vidéo. La méthode .nodes() renvoie un itérable de type vue de nœuds, tandis que .edges() renvoie un itérable de type vue d’arêtes, 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 également de récupérer les métadonnées associées aux nœuds et aux arêtes.
Vous allez écrire des compréhensions de liste pour construire efficacement ces requêtes en 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édicat ].
Vous devez compléter l’itérable et l’expression prédicat. N’hésitez pas à prototyper votre réponse en explorant le graphe dans l’IPython Shell avant de soumettre votre solution.
Cet exercice fait partie du cours
Introduction à l’analyse de réseaux en Python
Instructions
- Utilisez une compréhension de liste pour obtenir une liste de nœuds du graphe
Tayant l’étiquette'occupation'égale à'scientist'.- L’expression de sortie
na été fournie, ainsi que les variables d’itérationnetd. Votre tâche est de compléter l’itérable et l’expression conditionnelle. - Utilisez la méthode
.nodes()deTpour accéder à ses nœuds, et veillez à préciserdata=Trueafin d’obtenir les métadonnées des nœuds. - La variable d’itération
dest un dictionnaire. La clé à considérer 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 existent depuis au moins 6 ans, c’est‑à‑dire d’avant le 1er janv. 2010.- Votre tâche, à nouveau, est de compléter l’itérable et l’expression conditionnelle.
- Utilisez la méthode
.edges()deTpour accéder à ses arêtes. Veillez également à récupérer 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 cet exemple de code.
# 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 ____ < ____]