Consultas sobre un grafo
Ahora que ya conoces algunas propiedades básicas del grafo y has practicado usando las funciones de dibujo de NetworkX para visualizar sus componentes, es momento de explorar cómo puedes consultarlo para obtener nodos y aristas. En concreto, vas a buscar "nodos de interés" y "aristas de interés". Para ello, usarás los métodos .nodes() y .edges() que Eric explicó en el vídeo. El método .nodes() devuelve un iterable tipo Node view, mientras que .edges() devuelve un iterable tipo edge view, en el que cada tupla muestra los nodos presentes en esa arista. Recuerda que si pasas el argumento con palabra clave data=True en estos métodos, también recuperas los metadatos correspondientes asociados a los nodos y a las aristas.
Escribirás list comprehensions para construir estas consultas de forma eficiente en una sola línea. Si necesitas refrescar cómo funcionan, consulta la Parte 2 del curso Python Data Science Toolbox de DataCamp. Esta es la “receta” de una list comprehension:
[ expresión de salida for variable iteradora in iterable if expresión de predicado ].
Tienes que completar el _iterable_ y la _expresión de predicado_. Si quieres, haz pruebas explorando el grafo en el IPython Shell antes de Enviar respuesta.
Este ejercicio forma parte del curso
Introducción al análisis de redes en Python
Instrucciones del ejercicio
- Usa una list comprehension para obtener una lista de nodos del grafo
Tque tengan la etiqueta'occupation'con valor'scientist'.- La expresión de salida
nya está especificada, junto con las variables iteradorasnyd. Tu tarea es completar el iterable y la expresión condicional. - Usa el método
.nodes()deTpara acceder a sus nodos y no olvides indicardata=Truepara obtener los metadatos de los nodos. - La variable iteradora
des un diccionario. La clave de interés aquí es'occupation'y el valor de interés es'scientist'.
- La expresión de salida
- Usa una list comprehension para obtener una lista de aristas del grafo
Tque se formaron hace al menos 6 años, es decir, de antes del 1 ene 2010.- De nuevo, tu tarea es completar el iterable y la expresión condicional.
- Usa el método
.edges()deTpara acceder a sus aristas. Asegúrate también de obtener los metadatos de las aristas. - Las fechas se almacenan como objetos
datetime.dateen el diccionario de metadatosd, bajo la clave'date'. Para acceder, por ejemplo, a la fecha 1 ene 2009, el valor del diccionario seríadate(2009, 1, 1).
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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 ____ < ____]