Список графів
У цій серії вправ ви використаєте набір даних про повідомлення в коледжі, щоб навчитися фільтрувати графи для аналізу часових рядів. У цьому наборі даних вузли — це студенти, а ребра позначають повідомлення, надіслані від одного студента до іншого. Поточний граф охоплює всі комунікації на всіх часових відрізках.
Почнімо з аналізу графів, у яких з часом змінюються лише ребра.
Набір даних завантажено в датафрейм data. Можете дослідити його в IPython Shell. Зокрема, перегляньте вміст data['sender'] та data['recipient'].
Ця вправа є частиною курсу
Середній рівень Network Analysis у Python
Інструкції до вправи
- Ініціалізуйте порожній список під назвою
Gs. - Використайте цикл
for, щоб ітеруватися поmonths. Усередині циклу:- Створіть новий неорієнтований граф
Gза допомогою функціїnx.Graph(). - Додайте до графа всі вузли, які коли-небудь з'являлися. Для цього двічі викличте метод
.add_nodes_from()дляG: спочатку з аргументомdata['sender'], а потім зdata['recipient']. - Відфільтруйте датафрейм так, щоб залишився лише поточний місяць. Це вже зроблено за вас.
- Додайте ребра з відфільтрованого датафрейму. Для цього використайте метод
.add_edges_from()із переданими вzip()df_filtered['sender']таdf_filtered['recipient']. - Додайте
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))