NetworkX Graph Analysis
Python library for creating, analyzing, and visualizing networks and graphs.
When to Use
-
Social network analysis
-
Knowledge graphs and ontologies
-
Shortest path problems
-
Community detection
-
Citation/reference networks
-
Biological networks (protein interactions)
Graph Types
Type Edges Multiple Edges
Graph
Undirected No
DiGraph
Directed No
MultiGraph
Undirected Yes
MultiDiGraph
Directed Yes
Key Algorithms
Centrality Measures
Measure What It Finds Use Case
Degree Most connections Popular nodes
Betweenness Bridge nodes Information flow
Closeness Fastest reach Efficient spreaders
PageRank Importance Web pages, citations
Eigenvector Influential connections Who knows important people
Path Algorithms
Algorithm Purpose
Shortest path Minimum hops
Weighted shortest Minimum cost
All pairs shortest Full distance matrix
Dijkstra Efficient weighted paths
Community Detection
Method Approach
Louvain Modularity optimization
Greedy modularity Hierarchical merging
Label propagation Fast, scalable
Graph Generators
Generator Model
Erdős-Rényi Random edges
Barabási-Albert Preferential attachment (scale-free)
Watts-Strogatz Small-world
Complete All connected
Layout Algorithms
Layout Best For
Spring General purpose
Circular Regular structure
Kamada-Kawai Aesthetics
Spectral Clustered graphs
I/O Formats
Format Preserves Attributes Human Readable
GraphML Yes Yes (XML)
Edge list No Yes
JSON Yes Yes
Pandas Yes Via DataFrame
Performance Considerations
Scale Approach
< 10K nodes Any algorithm
10K - 100K Use approximate algorithms
100K Consider graph-tool or igraph
Key concept: NetworkX is pure Python - great for prototyping, may need alternatives for production scale.
Best Practices
-
Set random seeds for reproducibility
-
Choose correct graph type upfront
-
Use pandas integration for data exchange
-
Consider memory for large graphs
Resources
-
NetworkX docs: https://networkx.org/documentation/latest/
-
Tutorial: https://networkx.org/documentation/latest/tutorial.html