ComenzarEmpieza gratis

Lista de grafos

En este conjunto de ejercicios, vas a usar un conjunto de datos de mensajería universitaria para aprender a filtrar grafos para análisis de series temporales. En este conjunto de datos, los nodos son estudiantes y las aristas indican mensajes enviados de un estudiante a otro. El grafo, tal como está ahora, recoge todas las comunicaciones en todos los momentos.

Empecemos analizando los grafos en los que solo cambian las aristas a lo largo del tiempo.

El conjunto de datos se ha cargado en un DataFrame llamado data. Si quieres, explóralo en la IPython Shell. En particular, revisa la salida de data['sender'] y data['recipient'].

Este ejercicio forma parte del curso

Análisis de redes intermedio en Python

Ver curso

Instrucciones del ejercicio

  • Inicializa una lista vacía llamada Gs.
  • Usa un bucle for para iterar sobre months. Dentro del bucle:
    • Instancia un nuevo grafo no dirigido llamado G usando la función nx.Graph().
    • Añade al grafo todos los nodos que hayan aparecido alguna vez. Para ello, usa el método .add_nodes_from() sobre G dos veces: primero con data['sender'] como argumento y luego con data['recipient'].
    • Filtra el DataFrame para que solo contenga el mes dado. Esto ya está hecho por ti.
    • Añade las aristas desde el DataFrame filtrado. Para ello, usa el método .add_edges_from() con df_filtered['sender'] y df_filtered['recipient'] pasados a zip().
    • Añade G a la lista de grafos Gs con .append().

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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))
Editar y ejecutar código