この記事では、Pandasのデータフレームから独自の重み付きグラフを作成する方法について理解します。
この記事もチェック:Pandasのデータフレームに行を追加する5つの簡単な方法
Pandasのデータフレームから重み付きグラフを作成する
Pythonプログラムの最初のタスクは、必要なモジュール/ライブラリをコードにインポートすることです。
1
2
3
4
|
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
|
次のタスクは、後のセクションでプロットされるグラフのためのデータフレームを作成することです。
これはpandasとnumpyモジュールを使って得ることができます。
まず、ランダムシードを作成します。
これは、後のセクションでエッジの重みとして使用される、特定の範囲のランダムな整数を生成するのに役に立ちます。
次に、データフレームを DataFrame
関数で作成し、グラフのデータを関数に渡します。
1
2
3
4
|
r = np.random.RandomState(seed = 5 )
weights = r.random_integers( 1 , 5 , size = ( 5 ,))
df = pd.DataFrame({ 'from' :[ 'A' , 'B' , 'C' , 'D' , 'E' ], 'to' :[ 'D' , 'E' , 'A' , 'D' , 'C' ], 'weight' :weights})
df.head() |
1
2
3
4
|
fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title( "Plotting Nodes" )
nx.draw_networkx_nodes(G, pos, ax = ax)
|
次に、draw_networkx_nodes
、draw_networkx_edges
、draw_networkx_labels
関数を用いて、ノード、エッジ、ラベルを個別にプロットし、重み付けプロットを視覚化します。
Visualizing Nodes
Fake Tags
Fake Tags
Visualizing Edges
Fake Tags
Fake Tags
完全なグラフの可視化
1
2
3
4
|
fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title( "Plotting Edges" )
nx.draw_networkx_edges(G, pos, width = durations, ax = ax)
|
1
2
3
4
5
6
|
fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title( "Plotting Complete Graph" )
nx.draw_networkx_nodes(G, pos, ax = ax)
nx.draw_networkx_edges(G, pos, width = durations, ax = ax)
_ = nx.draw_networkx_labels(G, pos, labels, ax = ax)
|
まとめ
NetworkXライブラリのpandasデータフレームを使用してグラフを作成する方法を学びました。
このチュートリアルはいかがでしたか?以下のチュートリアルをご覧になることをお勧めします。
- NetworkXパッケージ – Pythonグラフライブラリ
- 重みのないグラフのノード間距離の計算
- Pythonによるグラフ操作【簡単な例付き】 4.
- Pythonでグラフを実装する
お時間を割いていただきありがとうございました! 何か新しいことを学べたでしょうか!