Pythonでグラフ構造(ノードとエッジからなるネットワーク)を扱いたいなら、networkxは非常に便利なライブラリです。
networkxとは何か、どんな用途に使えるのか、そして基本的な使い方についてと、最短経路の探索や中心性の計算といった解析もサンプルコード付きで紹介
✅ networkxとは?どんなことができるの?
networkxは、グラフ(ネットワーク)構造をPythonで扱うためのライブラリです。以下のような分野で活用されています:
- ソーシャルネットワーク分析(SNSのユーザー関係)
- 道路・交通ネットワークの最適化
- 通信・電力ネットワークの構造解析
- 知識グラフや推薦システムの基盤構築
🔰 networkxのインストール方法
まずはpipでインストールしましょう:
pip install networkx
🛠️ networkxの基本的な使い方
1. グラフの作成とノード・エッジの追加
import networkx as nx
import matplotlib.pyplot as plt
# 無向グラフの作成
G = nx.Graph()
# ノードとエッジの追加
G.add_nodes_from(["A", "B", "C", "D"])
G.add_edges_from([("A", "B"), ("B", "C"), ("C", "D")])
# グラフの可視化
nx.draw(G, with_labels=True)
plt.show()
2. グラフ構造の確認
print("ノード一覧:", G.nodes())
print("エッジ一覧:", G.edges())
print("各ノードの次数:", dict(G.degree()))
🔍 グラフの解析も簡単に!
3. 最短経路の計算
path = nx.shortest_path(G, source="A", target="D")
print("AからDへの最短経路:", path)
4. ノードの中心性(centrality)の計算
centrality = nx.degree_centrality(G)
print("各ノードの中心性スコア:", centrality)
🌐 他にもできること一覧
| 機能 | 説明 |
|---|---|
| 有向グラフの作成 | nx.DiGraph()を使えば方向付きのエッジを持つグラフも作成可能 |
| 重み付きグラフ | エッジにweight属性を付けて、コストや距離を表現 |
| ネットワークアルゴリズム | PageRank、最大フロー、クラスタリングなどもサポート |
| グラフの保存・読み込み | GML、GraphML、JSON形式での保存と読込が可能 |
networkxはPythonでネットワーク分析を行う強力ツール
networkxを使えば、Pythonでネットワークの可視化、解析、探索などが直感的に行えます。特にソーシャルグラフ、インフラネットワーク、推薦アルゴリズムなど、現代の多くのアプリケーションに応用可能です。

