エッジの時系列フィルタ
ここでは、エッジに対して条件を適用してグラフをフィルタリングする練習をします。条件付きのリスト内包表記に慣れるのに役立ちます。
演習の助けとして、datetime モジュールから datetime オブジェクトをインポートできることを思い出してください。グラフのメタデータには date というキーがあり、値として datetime オブジェクトが格納されています。
この演習はコースの一部です
Python 中級ネットワーク解析
演習の手順
G_subという新しいグラフを作成します。.add_nodes_from()メソッドを使って、元のグラフからノード(ノードのメタデータを含む)を追加します。- エッジの日付が 2004-05-16 より前であるという条件を 1 つ持つリスト内包表記を使ってエッジを追加します。次のように行ってください。
.add_edges_from()メソッドにリスト内包表記を引数として渡します。- リスト内包表記の出力式は
(u, v, d)です。Gのすべてのエッジを反復し、d['date']がdatetime(2004, 5, 16)より「小さい」かどうかを確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
import networkx as nx
from datetime import datetime
# Instantiate a new graph: G_sub
G_sub = ____
# Add nodes from the original graph
____
# Add edges using a list comprehension with one conditional on the edge dates, that the date of the edge is earlier than 2004-05-16.
G_sub.____([(____, ____, ____) for u, v, d in G.edges(data=True) if d['____'] < ____(____,____,____)])