시작하기무료로 시작하기

그래프에 대한 쿼리

이제 그래프의 기본 속성을 파악하고 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에서 그래프를 탐색하며 프로토타이핑해 보셔도 좋아요.

이 연습은 강의의 일부입니다

Python으로 시작하는 네트워크 분석

강의 보기

연습 안내

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

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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 ____ < ____]
코드 편집 및 실행