Consultas em um grafo
Agora que você já conhece algumas propriedades básicas do grafo e praticou o uso dos recursos de visualização do NetworkX para exibir seus componentes, é hora de explorar como fazer consultas a nós e arestas. Especificamente, você vai buscar por "nós de interesse" e "arestas de interesse". Para isso, vai usar os métodos .nodes() e .edges() que o Eric apresentou no vídeo. O método .nodes() retorna um iterável do tipo Node view, enquanto o método .edges() retorna um iterável do tipo edge view, em que cada tupla mostra os nós presentes naquela aresta. Lembre-se de que passar o argumento nomeado data=True nesses métodos também recupera os metadados correspondentes associados aos nós e às arestas.
Você vai escrever list comprehensions para montar essas consultas de forma eficaz em uma única linha. Para relembrar list comprehensions, consulte a Parte 2 do curso Python Data Science Toolbox da DataCamp. Eis a “receita” de uma list comprehension:
[ expressão de saída for variável iteradora in iterável if expressão predicada ].
Você precisa preencher o _iterável_ e a _expressão predicada_. Fique à vontade para prototipar sua resposta explorando o grafo no IPython Shell antes de enviar sua solução.
Este exercício faz parte do curso
Introdução à Análise de Redes em Python
Instruções do exercício
- Use uma list comprehension para obter uma lista de nós do grafo
Tque tenham o rótulo'occupation'igual a'scientist'.- A expressão de saída
njá foi especificada para você, assim como as variáveis iteradorasned. Sua tarefa é preencher o iterável e a expressão condicional. - Use o método
.nodes()deTpara acessar seus nós e não se esqueça de especificardata=Truepara obter os metadados dos nós. - A variável iteradora
dé um dicionário. A chave de interesse aqui é'occupation'e o valor de interesse é'scientist'.
- A expressão de saída
- Use uma list comprehension para obter uma lista de arestas do grafo
Tque tenham sido formadas por pelo menos 6 anos, ou seja, antes de 1º jan 2010.- Sua tarefa, novamente, é preencher o iterável e a expressão condicional.
- Use o método
.edges()deTpara acessar suas arestas. Lembre-se de obter também os metadados das arestas. - As datas são armazenadas como objetos
datetime.dateno dicionário de metadadosd, sob a chave'date'. Para acessar a data 1º jan 2009, por exemplo, o valor do dicionário seriadate(2009, 1, 1).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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 ____ < ____]