Список графов
В этой серии упражнений вы будете работать с набором данных об обмене сообщениями между студентами колледжа, чтобы научиться фильтровать графы для анализа временных рядов. В этом наборе данных узлы — это студенты, а рёбра обозначают сообщения, отправленные от одного студента к другому. Граф в текущем виде охватывает все коммуникации за все временные точки.
Начнём с анализа графов, в которых со временем изменяются только рёбра.
Набор данных загружен в 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))