파이썬의 그래프(네트워크) 분석 패키지 NetworkX
소개
NetworkX는 그래프(네트워크) 분석을 위한 파이썬 패키지이다.
코드
설치
터미널에서 다음과 같이 입력한다.
#설치
> pip install networkx
#버전 업데이트
> pip install --upgrade networkx
불러오기 및 버전 확인
networkx는 nx로 줄여 쓴다.
>>> import networkx as nx
>>> nx.__version__
'2.8.6'
그래프 생성
다음의 코드로 널 그래프를 생성한다.
>>> G = nx.Graph()
>>> nx.info(G)
'Graph with 0 nodes and 0 edges'
다음의 코드로 널 유향그래프를 생성한다.
>>> DG = nx.DiGraph()
>>> nx.info(DG)
'DiGraph with 0 nodes and 0 edges'
노드 추가 및 제거
.add_node()
로 노드를 추가한다. .nodes()
를 사용하면 그래프의 노드 목록을 볼 수 있다.
>>> G = nx.Graph()
>>> G.add_node("권은비")
>>> G.nodes()
NodeView(('권은비',))
노드의 속성을 부여하면서 추가할 수 있다. .nodes.data()
를 사용하면 속성이 같이 표기된 노드 목록을 볼 수 있다.
>>> G.add_node("사쿠라", 회사="쏘스뮤직", 그룹="르세라핌")
>>> G.nodes()
NodeView(('권은비', '사쿠라'))
>>> G.nodes.data()
NodeDataView({'권은비': {}, '사쿠라': {'회사': '쏘스뮤직', '그룹': '르세라핌'}})
리스트로 여러개의 노드를 추가할 수 있다.
>>> G.add_nodes_from(["강혜원", "최예나", "이채연"])
>>> G.nodes()
NodeView(('권은비', '사쿠라', '강혜원', '최예나', '이채연'))
.remove_node()
, remove_nodes_from()
으로 그래프의 노드를 제거할 수 있으며, 해당 노드에 연결된 에지도 같이 제거된다. .clear()
는 그래프의 모든 노드와 에지를 제거한다.
에지 추가 및 제거
두 노드 사이의 에지는 .add_edge()
, .add_edges_from()
로 추가한다.
>>> G.add_edge('사쿠라', '이채연')
>>> nx.info(G)
'Graph with 5 nodes and 1 edges'
>>> G.edges()
EdgeView([('사쿠라', '이채연')])
존재하지 않는 노드 사이의 에지를 추가하면, 노드도 자동으로 추가된다.
>>> G.add_edge('김채원', '조유리')
>>> G.add_edge('최예나', '조유리')
>>> G.add_edge('최예나', '김채원')
>>> G.nodes()
NodeView(('권은비', '사쿠라', '강혜원', '최예나', '이채연', '김채원', '조유리'))
>>> G.edges()
EdgeView([('사쿠라', '이채연'), ('최예나', '조유리'), ('최예나', '김채원'), ('김채원', '조유리')])
.remove_node()
, remove_nodes_from()
으로 그래프의 특정 에지를 제거할 수 있다. .clear_edges()
는 그래프의 모든 에지를 제거한다.
그 외
환경
- OS: Windows11
- Version: Python 3.9.2, networkx 2.8.6