Skip to content
Analysis for the story "How ActBlue is trying to turn small donations into a blue wave"
HTML Jupyter Notebook
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
data coalesce cand_office and reverse order of state coalesce Oct 24, 2018
pickles Update Oct 24, 2018
Pipfile Update Oct 19, 2018
Pipfile.lock Update Oct 19, 2018 Link readme to the HTML export of the analysis because GitHub refuses… Oct 25, 2018
analysis.html change Clinton states average calculation to include states with marg… Oct 25, 2018
analysis.ipynb change Clinton states average calculation to include states with marg… Oct 25, 2018
config.json.example Updates May 6, 2018
custom.css Add Barlow, Wolfe stats, clean up Sep 29, 2018

ActBlue analysis

Who did this?

This is an analysis from the Center for Public Integrity's data team in partnership with FiveThirtyEight. It was created by Chris Zubak-Skees. The analysis was informed by questions posed by political reporter Carrie Levine.

What's here?

  • Analysis - An analysis of ActBlue and other FEC filings.
  • Data - Spreadsheets produced by the analysis.

Why did we do this?

What does it mean when one organization raises more than $2.9 billion for democrats? The Center set out to answer that question.

How did we do it?

This analysis relied on a PostgreSQL database of more than 289,500 campaign finance filings loaded by the Center using fec-loader. These were analyzed using SQL, Pandas and Jupyter notebook software.

The notebook was developed on MacOS 10.13 with git, pipenv and Python 3 installed. These instructions are specific to that environment, but should be adaptable to others:

git clone
cd actblue-analysis
pipenv install
pipenv shell
python -m ipykernel install --user --name=actblue-analysis
jupyter lab

Query results are persisted to Pickle files, so the notebook can be run without access to the database.

If you do have access to a PostgreSQL database of campaign finance records in the correct schema and want to modify the queries, copy config.json.example to config.json, then update the values in config.json to the correct hostname and password.

You can’t perform that action at this time.