ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Use uma list comprehension para obter uma lista de nós do grafo T que tenham o rótulo 'occupation' igual a 'scientist'.
    • A expressão de saída n já foi especificada para você, assim como as variáveis iteradoras n e d. Sua tarefa é preencher o iterável e a expressão condicional.
    • Use o método .nodes() de T para acessar seus nós e não se esqueça de especificar data=True para 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'.
  • Use uma list comprehension para obter uma lista de arestas do grafo T que 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() de T para acessar suas arestas. Lembre-se de obter também os metadados das arestas.
    • As datas são armazenadas como objetos datetime.date no dicionário de metadados d, sob a chave 'date'. Para acessar a data 1º jan 2009, por exemplo, o valor do dicionário seria date(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 ____ < ____]
Editar e executar o código