시작하기무료로 시작하기

그래프 리스트

이번 연습 문제에서는 대학교 메시지 데이터셋을 사용해 시계열 분석을 위해 그래프를 필터링하는 방법을 배워 봅니다. 이 데이터셋에서 노드는 학생을, 간선은 한 학생이 다른 학생에게 보낸 메시지를 의미합니다. 현재 그래프는 모든 시점의 모든 소통을 담고 있어요.

우선, 시간이 지남에 따라 간선만 변하는 그래프부터 분석해 보겠습니다.

데이터셋은 data라는 DataFrame으로 로드되어 있습니다. IPython 쉘에서 자유롭게 탐색해 보세요. 특히 data['sender']data['recipient']의 출력을 확인해 보세요.

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

Python 중급 네트워크 분석

강의 보기

연습 안내

  • Gs라는 빈 리스트를 초기화하세요.
  • for 루프로 months를 순회하세요. 루프 내부에서:
    • nx.Graph() 함수를 사용해 G라는 새로운 무방향 그래프를 생성하세요.
    • 지금까지 한 번이라도 등장한 모든 노드를 그래프에 추가하세요. 이를 위해 G에서 .add_nodes_from()을 두 번 호출하세요. 첫 번째는 data['sender'], 두 번째는 data['recipient']를 인수로 사용합니다.
    • 해당 월의 데이터만 남도록 DataFrame을 필터링하세요. 이 단계는 이미 준비되어 있습니다.
    • 필터링된 DataFrame에서 간선을 추가하세요. 이를 위해 .add_edges_from()zip(df_filtered['sender'], df_filtered['recipient'])을 전달하세요.
    • 그래프 G를 그래프 리스트 Gs에 추가하세요.

실습형 인터랙티브 연습

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

import networkx as nx 

months = range(4, 11)

# Initialize an empty list: Gs
Gs = [] 
for month in months:
    # Instantiate a new undirected graph: G
    G = ____
    
    # Add in all nodes that have ever shown up to the graph
    ____
    ____
    
    # Filter the DataFrame so that there's only the given month
    df_filtered = data[data['month'] == month]
    
    # Add edges from filtered DataFrame
    ____
    
    # Append G to the list of graphs
    ____
    
print(len(Gs))
코드 편집 및 실행