For PyCon, PyData, ODSC, and beyond!
Switch branches/tags
Nothing to show
Clone or download
ericmjl Merge pull request #69 from ericmjl/pyup-scheduled-update-2018-09-24
Scheduled weekly dependency update for week 38
Latest commit 39be3a0 Sep 24, 2018
Failed to load latest commit information.
.github added instructions to reopen issue if stalebot closes too fast May 5, 2018
custom updated static html pages May 8, 2018
datasets update passengers dataset May 9, 2018
docs post-pycon commit Jul 7, 2018
images post-scipy commit Jul 10, 2018
solutions Started moving solutions into separate .py scripts Nov 15, 2017
tutorial-proposals Added PyCon 2018 tutorial proposal Nov 13, 2017
.gitignore updated gitignore to ignore unzipped dataset May 8, 2018
.pyup.yml Added pyup configuration. May 6, 2018
.travis.yml Revert to single line commands. Aug 12, 2018
0-pre-tutorial-exercises.ipynb post-scipy commit Jul 10, 2018
1-introduction.ipynb post-scipy commit Jul 10, 2018
2-networkx-basics-instructor.ipynb post-scipy commit Jul 10, 2018
2-networkx-basics-student.ipynb corrects edges access method in student notebook 2 May 21, 2018
3-hubs-and-paths-instructor.ipynb post-scipy commit Jul 10, 2018
3-hubs-and-paths-student.ipynb re-ran notebooks to ensure they are correct and sync'd up Apr 11, 2018
4-cliques-triangles-structures-instructor.ipynb post-scipy commit Jul 10, 2018
4-cliques-triangles-structures-student.ipynb added matrices May 4, 2018
5-graph-input-output-instructor.ipynb post-scipy commit Jul 10, 2018
5-graph-input-output-student.ipynb updated with GIS analysis yay May 10, 2018
6-bipartite-graphs-instructor.ipynb post-scipy commit Jul 10, 2018
6-bipartite-graphs-student.ipynb updated bipartite notebooks May 8, 2018
7-game-of-thrones-case-study-instructor.ipynb fixed notebooks for execution May 9, 2018
7-game-of-thrones-case-study-student.ipynb added numpy import May 10, 2018
8-US-airports-case-study-instructor.ipynb post-pycon commit Jul 7, 2018
8-US-airports-case-study-student.ipynb post-pycon commit Jul 7, 2018
CONTRIBUTORS Add content and datasets for Game of Thrones May 3, 2018
FEEDBACK-CONTRIBUTORS Added feedback contributors May 19, 2017
LICENSE Initial commit Dec 26, 2014
Makefile Added check command to makefile Aug 2, 2018 Add build status to README Jul 31, 2018
Synthetic Social Network.pkl Graph basics and intermediates Jan 31, 2015
bonus-1-network-statistical-inference-instructor.ipynb Re-ran notebooks to shorten outputs for HTML versions. Jul 11, 2017
bonus-1-network-statistical-inference-student.ipynb double-checked all notebooks for correctness after renaming them May 17, 2017
bonus-2-one-more-thing.ipynb pre-tutorial notebook run Jul 8, 2017
bonus-3-matrices-instructor.ipynb post-scipy commit Jul 10, 2018
bonus-3-matrices-student.ipynb updated with bonus matrix notebooks May 8, 2018 Added ffmpeg check. Aug 2, 2018
environment.yml Trying out travis with nbconvert_config. Jul 31, 2018 Trying out travis with nbconvert_config. Jul 31, 2018
requirements.txt Update numpy from 1.15.1 to 1.15.2 Sep 24, 2018 made environment compatible May 3, 2017

Network Analysis Made Simple

Build Status

Welcome to the GitHub repository for Network Analysis Made Simple! This is a tutorial designed to teach you the basic and practical aspects of graph theory. It has been presented at multiple conferences (PyCon, SciPy, PyData, and ODSC) in a variety of formats (ranging from 1.5 hr to 4 hour long workshops). The material is designed for a live tutorial presentation, with the code available for you to reference afterwards.

Getting Started


(Consider this option only if your WiFi is stable)

If you don't want the hassle of getting setup, you can use the Binder service to participate in the live tutorial. Just click on the button below:


Notebook HTML Versions

For tutorial participants who may run into technical issues, full HTML versions of the notebooks are available to follow along during the tutorial.

Local Setup

For those of you who would like to get setup beforehand and keep a local copy of the repository on your machine, follow along here.

Easiest way: Anaconda Distribution of Python

If you have the Anaconda distribution of Python 3 installed on a Unix-like machine (Linux, macOS, etc.), then run make conda, which wraps the commands below.

  1. $ conda env create -f environment.yml
  2. $ source activate nams
  3. $ python

If you do not have the Anaconda distribution, I would highly recommend getting it for Windows, Mac or Linux. It provides an isolated Python computing environment that will not interfere with your system Python installation, and comes with a very awesome package manager (conda) that makes installation of new packages a single conda install pkgname away.

If you're not using Python 3, then check out @jakevdp's talk at SciPy2015 to find out why!

Alternative to Anaconda: pip install

For those who do not have the capability of installing the Anaconda Python 3 distribution on their computers, please follow the instructions below.

Run make venv, which wraps up the commands below. Special thanks to @matt-land for putting this script together.

  1. Create a virtual environment for this tutorial, so that the installed packages do not mess with your regular Python environment. 2. $ pip install virtualenv 3. $ virtualenv network 4. $ source network/bin/activate
  2. $ pip install matplotlib networkx pandas hiveplot numpy jupyter

Check your environment:

  1. $ python

Manual Build

For this tutorial, you will need the following packages:

  1. Python 3
  2. matplotlib
  3. networkx
  4. pandas
  5. hiveplot - conda install -c conda-forge hiveplot or pip install hiveplot.
  6. nxviz - conda install -c conda-forge nxviz. (This implements Circos plots; HivePlots are being migrated over.)
  7. numpy
  8. scipy
  9. jupyter

Then, clone the repository locally.

  1. $ cd /path/to/your/directory
  2. Clone the repository to disk:
    1. $ git clone
  3. $ cd Network-Analysis-Made-Simple

Run the Jupyter Notebook

$ jupyter notebook

Your browser will open to an index page where you can click on a notebook to run it. Test that everything runs fine by executing all of the cells in the Instructor versions of the notebooks.


If you've attended this workshop, please leave feedback! It's important to help me improve the tutorial for future iterations.


Known Issues

If you get a "Python is not installed as a framework" error with matplotlib, please check out this issue for instructions to resolve it.

New Issues

If you're facing difficulties, please report it as an issue on this repository.


  1. Divvy Data Challenge
  2. Konect Network Analysis Datasets


  1. Jon Charest's use of Circos plots to visualize networks of Metal music genres. blog post | notebook
  2. Gain further practice by taking this course online at DataCamp!
  3. A gentle introduction to graph theory on Vaidehi Joshi's website