Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjuj pustą listę o nazwie Gs.
  • Użyj pętli for, aby iterować po months. Wewnątrz pętli:
    • Utwórz nowy graf nieskierowany o nazwie G, korzystając z funkcji nx.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() na G dwukrotnie – najpierw z argumentem data['sender'], a następnie z data['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ąc df_filtered['sender'] i df_filtered['recipient'] do funkcji zip().
    • Dołącz G do listy grafów Gs.

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))
Edytuj i uruchom kod