Voter Registration
Maryland Voter Registration Analysis
Overview
In this tutorial, we will incrementally assemble 11 tables of Maryland voter registration data by composing multiple stack operations together, producing a single consolidated table that spans multiple election years. By the end, we will export the result as a CSV ready for downstream analysis.
This workflow is based on a Baltimore Sun analysis for the story “Maryland nears record high voter registration — and independents make up the fastest-growing group”.
Data Sources
Data was extracted from the January through September 2018 PDF reports (September 2018 was the most recent data available at the time of publication), and from the September 2014 and September 2016 reports (for a point-in-time comparison of 2018 with the most recent election years), using Tabula, an open-source tool “for liberating data tables trapped inside PDF files.” It is provided in CSV files following the naming convention: {month}__{year}_{category}.csv. Registration data is categorized into four groups: totals, changes, new, and removals.
Workflow Steps
Pre-Processing
There is no pre-processing required to reproduce this workflow in OpenRoundup.
OpenRoundup steps
For each group perform these steps
-
Import CSV files for a specific category into OpenRoundup. You can use the browser’s search feature to filter by the four categories.

-
Select five tables and stack them together.
-
Inspect the stack table to ensure that the data has been combined correctly.
-
Materialize the stack table and inspect the results.
-
Repeat steps 2-4 until all files have been added.
-
Inspect final stack operation schema

-
Convert the root stack table’s column names to lowercase.
-
Export the root stack table as a CSV file.

Post-processing
Once the user has integrated these tables, we expect them to perform the following data cleaning steps in a downstream tool:
- Convert numeric columns to integers:
ADDRESS,NAME,DEM,REP,GRN,LIB,OTH,TOTAL,CONF.MAILING,INACTIVE. - Derive percentage columns for each party affiliation:
DEM_PCT,REP_PCT,GRN_PCT,LIB_PCT,OTH_PCT. These can be calculated by dividing the count of each party affiliation by the total number of voters in that row, and multiplying by 100 to get a percentage. For example,DEM_PCTcan be calculated as(DEM / TOTAL) * 100.