그래프 리스트
이번 연습 문제에서는 대학교 메시지 데이터셋을 사용해 시계열 분석을 위해 그래프를 필터링하는 방법을 배워 봅니다. 이 데이터셋에서 노드는 학생을, 간선은 한 학생이 다른 학생에게 보낸 메시지를 의미합니다. 현재 그래프는 모든 시점의 모든 소통을 담고 있어요.
우선, 시간이 지남에 따라 간선만 변하는 그래프부터 분석해 보겠습니다.
데이터셋은 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))