logo

Pythonのグラフ(ネットワーク)分析パッケージNetworkX 📂グラフ理論

Pythonのグラフ(ネットワーク)分析パッケージNetworkX

紹介

NetworkXグラフ(ネットワーク)分析のためのPythonパッケージだ。

コード

インストール

ターミナルで次のように入力する。

#설치
> 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