logo

파이썬의 그래프(네트워크) 분석 패키지 NetworkX 📂그래프이론

파이썬의 그래프(네트워크) 분석 패키지 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