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