Lista grafów
W tej serii ćwiczeń użyjesz zbioru danych o wiadomościach wysyłanych na uczelni, aby nauczyć się filtrować grafy na potrzeby analizy szeregów czasowych. W tym zbiorze danych węzły reprezentują studentów, a krawędzie oznaczają wiadomości wysyłane między nimi. Aktualnie graf uwzględnia całą komunikację ze wszystkich punktów czasowych.
Zacznijmy od analizy grafów, w których wraz z upływem czasu zmieniają się tylko krawędzie.
Zbiór danych został wczytany do DataFrame o nazwie data. Możesz go swobodnie eksplorować w powłoce IPython. Przyjrzyj się w szczególności wynikom data['sender'] i data['recipient'].
To ćwiczenie jest częścią kursu
Analiza sieci w Pythonie – poziom średniozaawansowany
Instrukcje do ćwiczenia
- Zainicjuj pustą listę o nazwie
Gs. - Użyj pętli
for, aby iterować pomonths. Wewnątrz pętli:- Utwórz nowy graf nieskierowany o nazwie
G, korzystając z funkcjinx.Graph(). - Dodaj do grafu wszystkie węzły, które kiedykolwiek się w nim pojawiły. W tym celu wywołaj metodę
.add_nodes_from()naGdwukrotnie – najpierw z argumentemdata['sender'], a następnie zdata['recipient']. - Przefiltruj DataFrame tak, aby zawierał dane tylko z danego miesiąca. Ten krok został już za ciebie wykonany.
- Dodaj krawędzie z przefiltrowanego DataFrame. Użyj metody
.add_edges_from(), przekazującdf_filtered['sender']idf_filtered['recipient']do funkcjizip(). - Dołącz
Gdo listy grafówGs.
- Utwórz nowy graf nieskierowany o nazwie
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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))