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