Визуализация количества публикаций со временем
Вспомним, как строить графики изменяющейся статистики графа на основе данных о нём. Сначала вы используете данные графа, чтобы подсчитать количество рёбер, которые появляются в скользящем временном окне размером td дней — в данном упражнении это 2 дня.
Переменные типа datetime — dayone и lastday — уже заданы для вас.
Это упражнение является частью курса
Средний уровень сетевого анализа на Python
Инструкции к упражнению
- Определите временной интервал в 2 дня с помощью функции
timedelta(), указав соответствующее значение параметраdays. - Внутри цикла
while:- Отфильтруйте рёбра так, чтобы они попадали в скользящее временное окно. Используйте генератор списка: выходным выражением должно быть
(u, v, d), итерируемым объектом —G.edges(data=True), а условиями —d['date']>=curr_dayи<curr_day+td. - Добавьте количество рёбер (используйте функцию
len()для его вычисления) вn_posts. - Увеличьте
curr_dayна временной интервалtd.
- Отфильтруйте рёбра так, чтобы они попадали в скользящее временное окно. Используйте генератор списка: выходным выражением должно быть
- Постройте график
n_postsс помощьюplt.plot().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import necessary modules
from datetime import timedelta
import matplotlib.pyplot as plt
# Define current day and timedelta of 2 days
curr_day = dayone
td = ____
# Initialize an empty list of posts by day
n_posts = []
while curr_day < lastday:
if curr_day.day == 1:
print(curr_day)
# Filter edges such that they are within the sliding time window: edges
edges = [(____, ____, ____) for u, v, d in ____ if d['date'] >= ____ and d['date'] < ____ + ____]
# Append number of edges to the n_posts list
____
# Increment the curr_day by the time delta
____ += ____
# Create the plot
plt.plot(____)
plt.xlabel('Days elapsed')
plt.ylabel('Number of posts')
plt.show()