-
[NetworkX] 노드에 속성 부여하는 방법 (파이썬 네트워크 분석 8)Data & ML & AI/NetworkX 2022. 10. 16. 18:52반응형
엣지에 속성을 부여하는 방법이 간단했던 것처럼,
노드에 속성을 부여하는 방법 또한 간단합니다.
1. 속성 부여하기 : G.add_node(), G.add_nodes_from()
# 그래프 생성하기 G = nx.Graph() family = [('A','B',6),('E','J',15)] friend = [('B','C',13),('G','F',9)] coworker = [('C','F',21),('D','E',2),('E','I',10),('I','J',3),('E','H',9)] neighbor = [('C','E',25)] G.add_weighted_edges_from(friend, relation='family') G.add_weighted_edges_from(friend, relation='friend') G.add_weighted_edges_from(coworker, relation='coworker') G.add_weighted_edges_from(neighbor, relation='neighbor')
# 개별 노드에 속성 부여하기 G.add_node('C', role='manager') G.add_node('D', age=25) # 한번에 여러 노드에 속성 부여하기 trader = ['A','B'] G.add_nodes_from(trader, role='trader')
- add_node() : 개별 노드에 속성을 부여할 수 있습니다.
- add_nodes_from() : 한번에 여러 노드에 속성을 부여할 수 있습니다.
위의 예시에서는 role, age라는 속성을 부여했지만, add_edge(), add_nodes_from()을 사용할 때와 마찬가지로
원하는 이름의 속성을 부여하면 됩니다.
2. 모든 노드의 정보 확인하기
# 모든 노드 리스트 확인하기 G.nodes() # 출력결과 NodeView(('A', 'B', 'E', 'J', 'C', 'G', 'F', 'D', 'I', 'H')) # 모든 노드의 속성까지 확인하기 G.nodes(data=True) # 출력결과 NodeDataView({'A': {'role': 'trader'}, 'B': {'role': 'trader'}, 'E': {}, 'J': {}, 'C': {'role': 'manager'}, 'G': {}, 'F': {}, 'D': {'age': 25}, 'I': {}, 'H': {}})
3. 개별 노드의 속성 확인하기
# 방법1 G.nodes['A'] # 방법2 G.nodes['A']['role'] # 방법1 출력결과 {'role': 'trader'} # 방법2 출력결과 'trader'
특정 엣지의 속성 확인하기에서와 마찬가지로,
NetowrkX 버전이 1.X인 경우와 2.X인 경우 좀 다를 수 있습니다.
자습에 도움을 얻고있는 Coursera강의에서는 G.node['A']['role']를 사용하고 있습니다.
버전 1.X 기준인 것으로 보입니다.
하지만 버전 2.X에서는 Graph 객체가 node attribute를 가지지 않습니다.
버전 2.X에서 사용하면 AttributeError가 나타납니다.
NetwrokX 2.X.X를 사용하신다면 G.nodes['A'] 와 같은 방법을 사용하셔야 합니다.
참조 : https://networkx.org/documentation/stable/tutorial.html#edge-attributes
본 게시물은 Coursera의 Applied Social Network Analysis in Python(by Daniel Romero)를 통해 자습하며 작성한 게시물입니다.
반응형'Data & ML & AI > NetworkX' 카테고리의 다른 글
[NetworkX] Bipartite Graph(양분 그래프) 그리기 (0) 2022.10.27 [NetworkX] 양분그래프, Bipartite Graph (파이썬 네트워크 분석 9) (0) 2022.10.22 [NetworkX] add_edges_from의 사용방법 (1) 2022.10.14 [NetworkX] 멀티그래프 데이터 읽기 (파이썬 네트워크 분석 7) (0) 2022.10.12 [NetworkX] 그래프 데이터 읽기 (파이썬 네트워크 분석 6) (1) 2022.10.11