НачатьНачать бесплатно

Список графов

В этой серии упражнений вы будете работать с набором данных об обмене сообщениями между студентами колледжа, чтобы научиться фильтровать графы для анализа временных рядов. В этом наборе данных узлы — это студенты, а рёбра обозначают сообщения, отправленные от одного студента к другому. Граф в текущем виде охватывает все коммуникации за все временные точки.

Начнём с анализа графов, в которых со временем изменяются только рёбра.

Набор данных загружен в DataFrame с именем data. Не стесняйтесь изучить его в IPython Shell — в частности, обратите внимание на вывод data['sender'] и data['recipient'].

Это упражнение является частью курса

Средний уровень сетевого анализа на Python

Посмотреть курс

Инструкции к упражнению

  • Инициализируйте пустой список с именем Gs.
  • С помощью цикла for выполните итерацию по months. Внутри цикла:
    • Создайте новый неориентированный граф с именем G, используя функцию nx.Graph().
    • Добавьте в граф все узлы, которые когда-либо встречались в данных. Для этого вызовите метод .add_nodes_from() на объекте G дважды: сначала передав data['sender'], затем — data['recipient'].
    • Отфильтруйте DataFrame, оставив только данные за указанный месяц. Эта часть уже выполнена за вас.
    • Добавьте рёбра из отфильтрованного DataFrame. Для этого используйте метод .add_edges_from(), передав df_filtered['sender'] и df_filtered['recipient'] в функцию zip().
    • Добавьте 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))
Редактировать и запускать код