Saltar al contenido

# analisis-de-grafos-en-python-y-networkx

Análisis de Grafos en Python y NetworkX

Volver a la portada del curso
Lectura (Markdown)

Documentación y Recursos de NetworkX

Sección 2 · Fundamentos de NetworkX

Documentación y recursos de NetworkX

NetworkX tiene cientos de funciones: solo las que terminan en _centrality son 30 en la versión 3.6.1. Nadie las memoriza. Lo que sí se aprende es dónde buscar, cómo leer la página de una función y cómo comprobar desde Python lo que dice la documentación. Esta lección es ese mapa.

El sitio oficial

La documentación vive en networkx.org/documentation/stable y tiene cinco partes que usarás en el curso:

  • Install: instalación con pip y dependencias opcionales.
  • Tutorial: un recorrido corto por la creación de grafos, atributos, grafos dirigidos y dibujo. Es la mejor primera lectura.
  • Reference: la referencia completa de la API, organizada por temas.
  • Gallery: ejemplos ejecutables con su figura, agrupados en categorías como Basic, Drawing, Graph y Algorithms. Por ejemplo, «Betweenness Centrality» o «Spring Layout».
  • Guides: el sitio nx-guides, con notebooks más largos sobre algoritmos y aplicaciones.

Un detalle de versiones: la dirección stable apunta siempre a la versión más reciente (hoy es la 3.7). Este curso usa la 3.6.1, cuya documentación sigue disponible en networkx.org/documentation/networkx-3.6.1. Si una función no se comporta como dice la página, revisa primero nx.__version__.

Cómo está organizada la referencia

La referencia tiene 16 secciones. Estas son las que más vas a abrir:

SecciónQué encuentrasEjemplo en el curso
Graph typesGraph, DiGraph, MultiGraph, MultiDiGraph y sus métodosG.add_edge, G.neighbors
AlgorithmsUn módulo por tema: centralidad, comunidades, componentes, caminos más cortos, clustering, núcleos…nx.betweenness_centrality
FunctionsUtilidades sobre cualquier grafonx.density
Graph generatorsGrafos clásicos, aleatorios y de ejemplonx.karate_club_graph
ConvertingConversión desde y hacia pandas, NumPy y SciPynx.to_pandas_edgelist
Reading and writingFormatos de archivo (GraphML, listas de aristas, GML…)nx.write_graphml
DrawingDibujo con Matplotlib y algoritmos de posición (layouts)nx.spring_layout

Las comunidades están en su propio subpaquete y se llaman como nx.community.louvain_communities. Su página agrupa los métodos por familia: basados en modularidad, Louvain, Leiden, propagación de etiquetas, bipartición (Kernighan-Lin) y particiones por centralidad (Girvan-Newman), además de modularity para medir una partición.

Cómo leer la página de una función

Casi todas siguen el mismo formato: firma, Parameters, Returns y, según el caso, Raises, Notes, References y Examples. Las dos partes que más errores evitan son los valores por defecto de los parámetros y lo que devuelve la función. Puedes consultar ambas sin salir de Python:

import inspect
import networkx as nx

print(nx.__version__)
print(nx.density.__doc__.strip().splitlines()[0])
com = [f for f in dir(nx.community) if f.endswith("_communities")]
print(len(com), com[:3])
cen = [f for f in dir(nx) if f.endswith("_centrality")]
print(len(cen))
print(inspect.signature(nx.betweenness_centrality))
print(inspect.signature(nx.pagerank))

Salida:

3.6.1
Returns the density of a graph.
8 ['asyn_lpa_communities', 'fast_label_propagation_communities', 'greedy_modularity_communities']
30
(G, k=None, normalized=True, weight=None, endpoints=False, seed=None, *, backend=None, **backend_kwargs)
(G, alpha=0.85, personalization=None, max_iter=100, tol=1e-06, nstart=None, weight='weight', dangling=None, *, backend=None, **backend_kwargs)

Las dos firmas muestran algo que la documentación explica y que es fácil pasar por alto: betweenness_centrality ignora los pesos por defecto (weight=None), mientras que pagerank los usa (weight='weight'). Además, cuando la intermediación usa pesos, los interpreta como distancias: un peso alto significa un camino largo. En la red de PyShop el peso es cuántas veces se compraron juntos dos productos, así que pasarlo tal cual invierte su sentido. En Jupyter, nx.pagerank? muestra la documentación completa en el notebook, y help(nx.pagerank) hace lo mismo en cualquier consola.

Cómo buscar una función

  1. Nombra el concepto en inglés. «Puente» es bridge, «componente conexa» es connected component, «núcleo» es k-core. El buscador del sitio responde a esos términos.
  2. Entra por la sección Algorithms. Si no sabes el nombre, recorre la lista de módulos por tema.
  3. Busca un ejemplo en la galería. Muchas preguntas de dibujo ya tienen un ejemplo con su código.
  4. Comprueba con dir e inspect. Confirma que la función existe en tu versión y revisa sus parámetros por defecto.

Recursos para seguir

  • Facebook Network Analysis (nx-guides): análisis exploratorio de una red de 4,039 nodos y 88,234 aristas con densidad, caminos, centralidades, clustering, puentes y comunidades. Repasa casi todo el curso con datos reales.
  • Networks in Epidemiology: Hantavirus (nx-guides): reconstruye con un DiGraph una red de transmisión publicada.
  • Network Science, de Albert-László Barabási: libro de texto (Cambridge University Press, 2016) que se lee gratis en línea; cubre grafos aleatorios, redes libres de escala, robustez y comunidades.
  • Complex Network Analysis in Python, de Dmitry Zinoviev (Pragmatic Bookshelf, 2018): construcción, análisis y visualización de redes con NetworkX, con casos de estudio.
  • El artículo que presentó la biblioteca: Hagberg, Schult y Swart, «Exploring network structure, dynamics, and function using NetworkX», Proceedings of the 7th Python in Science Conference (SciPy 2008), pp. 11-15. Es la referencia que se usa para citar NetworkX en trabajos académicos.

Trampas comunes

  • Leer la documentación de otra versión. Fíjate en el número de versión de la página.
  • Suponer el valor de weight. Cada función tiene su propio valor por defecto; revísalo siempre.
  • Esperar una lista y recibir un generador. nx.connected_components(G) devuelve un generador; envuélvelo en list() o recórrelo.
  • Modificar una vista. G.degree o G.subgraph(nodos) son vistas del grafo original, no copias; la página de cada método lo indica.

Cuando una función nueva aparezca en el curso, abre su página una vez: firma, valores por defecto y qué devuelve. Son dos minutos que evitan horas de resultados raros.

Recursos