グラフのリスト
この演習セットでは、大学内のメッセージ送受信データセットを使って、時系列解析のためにグラフをフィルタリングする方法を学びます。このデータセットでは、ノードは学生、エッジはある学生から別の学生へ送られたメッセージを表します。現在のグラフは、すべての時点での全コミュニケーションを含んでいます。
まずは、時間とともにエッジだけが変化するグラフを分析していきましょう。
データセットは data という DataFrame に読み込まれています。IPython シェルで自由に確認してみてください。特に、data['sender'] と data['recipient'] の出力をチェックしましょう。
この演習はコースの一部です
Python 中級ネットワーク解析
演習の手順
Gsという名前の空のリストを初期化します。forループでmonthsを反復します。ループ内で次を行います:nx.Graph()関数を使って、Gという新しい無向グラフを作成します。- これまでに登場したすべてのノードをグラフに追加します。そのために、
Gに対して.add_nodes_from()を2回呼び出し、最初にdata['sender']、次にdata['recipient']を引数として渡します。 - DataFrame を指定の月の行だけにフィルタします。これはすでに用意されています。
- フィルタ済みの DataFrame からエッジを追加します。そのために、
.add_edges_from()にzip(df_filtered['sender'], df_filtered['recipient'])を渡します。 GをグラフのリストGsに追加します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
import networkx as nx
months = range(4, 11)
# Initialize an empty list: Gs
Gs = []
for month in months:
# Instantiate a new undirected graph: G
G = ____
# Add in all nodes that have ever shown up to the graph
____
____
# Filter the DataFrame so that there's only the given month
df_filtered = data[data['month'] == month]
# Add edges from filtered DataFrame
____
# Append G to the list of graphs
____
print(len(Gs))