1. 학습
  2. /
  3. 강의
  4. /
  5. Python으로 시작하는 네트워크 분석

Connected

연습 문제

그래프에 대한 쿼리

이제 그래프의 기본 속성을 파악하고 NetworkX의 그리기 기능으로 구성 요소를 시각화하는 연습도 해 보았으니, 노드와 엣지를 어떻게 질의할 수 있는지 탐색해 볼 차례예요. 구체적으로는 "관심 있는 노드"와 "관심 있는 엣지"를 찾아볼 거예요. 이를 위해 영상에서 Eric이 소개한 .nodes()와 .edges() 메서드를 사용합니다. .nodes() 메서드는 노드 뷰 이터러블을, .edges() 메서드는 엣지 뷰 이터러블을 반환하며, 각 튜플은 해당 엣지에 존재하는 노드 쌍을 나타냅니다. 이 메서드들에 키워드 인수 data=True를 전달하면 노드와 엣지에 연결된 메타데이터도 함께 가져올 수 있다는 점을 떠올려 주세요.

이 질의를 한 줄로 효과적으로 만들기 위해 리스트 컴프리헨션을 작성하겠습니다. 리스트 컴프리헨션이 익숙하지 않다면 DataCamp의 Python Data Science Toolbox Part 2를 참고하세요. 리스트 컴프리헨션의 형태는 다음과 같아요:

[ output expression for iterator variable in iterable if predicate expression ].

여기서 여러분은 _iterable_과 _predicate expression_을 채워 넣어야 합니다. 답변을 제출하기 전에 IPython Shell에서 그래프를 탐색하며 프로토타이핑해 보셔도 좋아요.

지침

100 XP
  • 그래프 T에서 'occupation' 레이블이 'scientist'인 노드 목록을 리스트 컴프리헨션으로 구하세요.
    • output expression n과 iterator variables n, d는 이미 지정되어 있습니다. 여러분은 iterable과 conditional expression을 채우면 됩니다.
    • T의 노드에 접근할 때는 .nodes() 메서드를 사용하고, 노드의 메타데이터를 얻도록 data=True를 지정하세요.
    • 반복 변수 d는 사전이며, 여기서 관심 있는 키는 'occupation', 관심 있는 값은 'scientist'입니다.
  • 그래프 T에서 최소 6년 전에 형성된, 즉 2010년 1월 1일 이전의 엣지 목록을 리스트 컴프리헨션으로 구하세요.
    • 이번에도 iterable과 conditional expression을 채우면 됩니다.
    • 엣지에 접근할 때는 T의 .edges() 메서드를 사용하세요. 엣지의 메타데이터도 함께 가져와야 합니다.
    • 날짜는 메타데이터 사전 d의 'date' 키에 datetime.date 객체로 저장되어 있습니다. 예를 들어 2009년 1월 1일은 date(2009, 1, 1)로 접근합니다.