A Dive into Washington D.C.’s Parking Enforcement: Unveiling Patterns and Impacts

Wadi Ahmed
INST414: Data Science Techniques
4 min readFeb 12, 2024

An analytical look into the work of the D.C Department of Public Works

Washington D.C., home to more than 712,816 residents, and over 6 million residents in the surrounding metro area, is known across the region for its incredibly harsh ticketing enforcement. It's something that hits close to home: as someone who's had to return to their car to find a $100 ticket right after just a couple of minutes, it feels unjust to shell out a portion of your already modest paycheck for such a minor infraction.

This had me wondering: how much revenue is generated by some of these tickets? And are there specific areas where enforcement is more rigorous or lax? For many citizens, and especially as someone greatly affected by these tickets, answers to these questions can provide a more statistical basis on how to avoid them in the future. In order to do this, I had to find revenue amounts for tickets within a specific time range, strictly from D.C. government services (Federal parking violations are handled differently, and private parking isn’t enforceable unless your car gets towed by the private party), as well as the locations where enforcement occurs.

The D.C. government hosts a database of information at opendata.dc.gov. This is where I found a dataset of parking enforcement from May 2023 (link), and from there, this is where I started my analysis.

I started off by importing these libraries, necessary for the plotting of points on the graph as well as general data processing.

import pandas as pd #Data Processing
import matplotlib.pyplot as plt #Used for plotting points
from shapely.geometry import Point, Polygon
import geopandas as gpd

After importing, I then imported the dataset and created a list containing the agencies (mainly the Department of Public Works, as they are the most prevalent enforcers of parking regulations aside from the District’s Transportation Department) to search for in the dataset. Then, I created a new dataframe to clean columns, where I extracted the issuing agency name, the date issued, location, fine amount, and the coordinates where they were issued.

Once doing that, I summed up the fine amount to get a rough total of $6,605,660 on more than 113,000 tickets issued by just the D.C Department of Public Works. However, I wanted to see if I can make trends on where the most tickets would be found across the district, and this resulted in me mapping out the coordinates to get a sense of their distribution. In order to do this, I grabbed a file from the same website that I received the original dataset from that’s used for mapping by government officials in D.C (https://opendata.dc.gov/datasets/7241f6d500b44288ad983f0942b39663/explore). These applications are mainly used for specialized geolocating software (ArcGIS, etc.), but for our case, Python will do what we want to see!

After that, it was a matter of mapping all the coordinates to points that could be corroborated onto this boundary map.

#Plot ticket Locations using GeoPandas
ticketLocations = gpd.read_file('DCBaseFile/Washington_DC_Boundary.shp')
fig, ax = plt.subplots(figsize=(15,15))
ticketLocations.plot(ax=ax)
crs={'init':'epsg:4326'}
geometry = [Point(xy) for xy in zip(ticketDetails['LONGITUDE'], ticketDetails['LATITUDE'])]
coordinatePoints = gpd.GeoDataFrame(ticketDetails, crs = crs, geometry=geometry)
coordinatePoints.plot(ax = ax, color = 'red')

Using an extension, Geo Data Viewer (Found on the VSCode Extension MarketPlace), I was able to then see the visualizations of this data onto a map.

Tickets issued by the Department of Public Works in May 2023

Overall, the distribution of tickets appeared normal, especially when compared with population numbers in specific areas of the district. On first glance, however, one of the biggest observations was the concentration of dots in the middle; along the Georgia Avenue Corridor going from North to South, and the more central artery of U.S. Route 50. Being that those points are closer to the city and with thousands of tourists visiting, it’s only natural that many tickets would be issued around there. A notable lack of enforcement in the extremely wealthy Georgetown/Wesley Park areas of western D.C. contrasts with the much less affluent areas of Southeast D.C., where more parking enforcement seems to be present.

These are general assumptions, however, as the model generated suffers from some limitations. Most notably, these are just tickets issued by the Department of Public Works and not by the many other D.C. agencies capable of issuing tickets. Additionally, it does not denote payment or whether the tickets were dismissed after adjudication. As tickets have a payment window of 30 days and this data was generated in the late days of May 2023, these issues are definitely present. While not biased per se, this could lead to false conclusions being drawn as not every statistic is taken into account, but the model does provide a rough idea of the scope of D.C. parking enforcement.

With ticket totals ranging in the millions every month, D.C. should start seeking ways to make this enforcement much more equitable across all areas of the city, and increase enforcement in some areas, especially around the central artery where traffic issues can occur, while being more lenient in accepting challenges to fines, which can financially impact some of its more vulnerable citizens (upon a rough inspection of the dataset, less than 1.4% of tickets were dismissed, mainly due to mistaken identities of the car). This data analysis, however, has helped me understand its critical importance in creating usable information, from government to private citizens like myself, to understand the scope of programs like ticket enforcement in order to create better ways of making them work.

GitHub Link to find and generate this data can be found here: https://github.com/CaptFalc/Assignment-1

--

--