Dotazy nad grafem
Teď, když znáš základní vlastnosti grafu a umíš pracovat s kreslicími nástroji NetworkX pro vizualizaci jeho komponent, je čas prozkoumat, jak se na něj dá dotazovat – tedy jak hledat konkrétní uzly a hrany. Konkrétně se zaměříš na "uzly zájmu" a "hrany zájmu". K tomu využiješ metody .nodes() a .edges(), které Eric představil ve videu. Metoda .nodes() vrací iterovatelný pohled na uzly, zatímco .edges() vrací iterovatelný pohled na hrany – každá n-tice přitom ukazuje uzly, které daná hrana spojuje. Nezapomeň, že předáním klíčového argumentu data=True získáš i metadata přiřazená k uzlům nebo hranám.
Dotazy budeš sestavovat pomocí list comprehensions – vše na jediném řádku. Pokud si potřebuješ připomenout, jak list comprehensions fungují, podívej se na část 2 kurzu Python Data Science Toolbox. Tady je základní struktura:
[ výstupní výraz for proměnná iterátoru in iterovatelný objekt if podmínkový výraz ].
Tvým úkolem je doplnit _iterovatelný objekt_ a _podmínkový výraz_. Klidně si odpověď nejdřív otestuj v IPython Shellu a teprve pak řešení odešli.
Toto cvičení je součástí kurzu
Úvod do analýzy sítí v Pythonu
Pokyny k cvičení
- Pomocí list comprehension získej seznam uzlů z grafu
T, které mají atribut'occupation's hodnotou'scientist'.- Výstupní výraz
nje už zadaný, stejně jako proměnné iterátorunad. Tvým úkolem je doplnit iterovatelný objekt a podmínkový výraz. - Pomocí metody
.nodes()objektuTpřistup k jeho uzlům a nezapomeň zadatdata=True, aby ses dostal/a k metadatům uzlů. - Proměnná iterátoru
dje slovník. Klíč, který tě zajímá, je'occupation'a hledaná hodnota je'scientist'.
- Výstupní výraz
- Pomocí list comprehension získej seznam hran z grafu
T, které existují alespoň 6 let, tedy vznikly před 1. lednem 2010.- Opět doplň iterovatelný objekt a podmínkový výraz.
- Pomocí metody
.edges()objektuTpřistup k jeho hranám. Nezapomeň si vyžádat i metadata hran. - Data jsou ve slovníku metadat
duložena jako objektydatetime.datepod klíčem'date'. Například pro přístup k datu 1. ledna 2009 by hodnota slovníku byladate(2009, 1, 1).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Use a list comprehension to get the nodes of interest: noi
noi = [n for n, d in ____ if d['____'] == '____']
# Use a list comprehension to get the edges of interest: eoi
eoi = [(u, v) for u, v, d in ____ if ____ < ____]