-
[NetworkX] 멀티그래프 데이터 읽기 (파이썬 네트워크 분석 7)Data & ML & AI/NetworkX 2022. 10. 12. 00:06반응형
이전 글에서는 일반적인 무방향 그래프(nx.Graph())와 방향그래프(nx.DiGraph())의 데이터를 읽는 방법을 살펴보았습니다.
https://brain-nim.tistory.com/48
다중그래프 (nx.MultiGraph(), nx.MultiDiGraph())에서는 아주 조금 다른 점이 있습니다.
일단 아래사진 우측의 그래프를 생성한 뒤 이어가겠습니다. (여기서는 nx.MultiDiGraph()를 예시로 합니다.)
# 하지만 타자가 귀찮기 때문에 A~G 노드끼리 연결된 엣지만 작성했습니다. G = nx.MultiDiGraph() family = [('A','B',{'weight':6})] friend = [('A','B',{'weight':18}),('C','B',{'weight':13}),('G','F',{'weight':9})] coworker = [('C','F',{'weight':21}),('D','E',{'weight':2})] neighbor = [('C','E',{'weight':25}),('F','G',{'weight':3})] G.add_edges_from(family,relation='family') G.add_edges_from(friend,relation='friend') G.add_edges_from(coworker,relation='coworker') G.add_edges_from(neighbor,relation='neighbor')
1. 모든 엣지 리스트 확인하기 (nx.Graph(), nx.DiGraph() 와 동일)
G.edges() # OutMultiEdgeDataView([('A', 'B'), ('A', 'B'), ('C', 'B'), ('C', 'F') ...생략
2. 엣지가 가진 모든 속성까지 확인하기 (nx.Graph(), nx.DiGraph() 와 동일)
G.edges(data=True) # OutMultiEdgeDataView([('A', 'B', {'relation': 'family', 'weight': 6}), ('A', 'B', {'relation': 'friend', 'weight': 18}), ... 생략
3. 엣지가 가진 특정 속성만 확인하기 (nx.Graph(), nx.DiGraph() 와 동일)
G.edges(data='relation') # OutMultiEdgeDataView([('A', 'B', 'family'), ('A', 'B', 'friend'), ... 생략
4. 특정 엣지의 속성 확인하기
G['A']['B'] # 출력결과 AtlasView({0: {'relation': 'family', 'weight': 6}, 1: {'relation': 'friend', 'weight': 18}}) # (비교용) nx.Graph(), nx.DiGraph() 였을 때의 출력결과 # {'relation': 'family', 'weight': 6}
차이가 보이시나요?
다중 그래프에서는 동일한 노드쌍 사이에 여러개의 엣지가 있을 수 있기 때문에,
AtlasView( {0: {~~~~}}, 1: {~~~~~}, .... } ) 의 형태로 return합니다.
여기서 0,1...은 일종의 index로, 엣지가 생성된 순서입니다.
['A'],['B'] 사이의 여러 엣지 중, 특정 하나의 엣지 정보만 가져오고 싶다면,
뒤에 index정보를 추가로 입력하면 됩니다.
# 방법1 G['A']['B'][1] # 방법1 출력결과 {'relation': 'friend', 'weight': 18} # 방법2 G['A']['B'][1]['relation'] # 방법2 출력결과 'friend'
본 게시물은 Coursera의 Applied Social Network Analysis in Python(by Daniel Romero)를 통해 자습하며 작성한 게시물입니다.
반응형'Data & ML & AI > NetworkX' 카테고리의 다른 글
[NetworkX] 노드에 속성 부여하는 방법 (파이썬 네트워크 분석 8) (0) 2022.10.16 [NetworkX] add_edges_from의 사용방법 (1) 2022.10.14 [NetworkX] 그래프 데이터 읽기 (파이썬 네트워크 분석 6) (1) 2022.10.11 [NetworkX] 그래프 종류 종합정리 (파이썬 네트워크 분석 5) (0) 2022.10.09 [NetworkX] 멀티그래프, Multigraph (파이썬 네트워크 분석 4) (0) 2022.08.02