I look forward to the day that I will see Philadelphia featured not as an example where numerous statistical tests all point to racial bias in policing practices, but rather as a national leader in evidence-based justice reform.
The datasets in this dashboard are:
For ease of understanding, this dashboard uses the term “traffic stops” for all Philadelphia Police Department (PPD) vehicle stops. While the majority of PPD vehicle stops are for traffic violations, approximately 2% of vehicle stops are for other police actions, such as criminal investigations. The traffic stops dataset does not differentiate between stops for traffic infractions and other types of vehicle stops.
This dashboard aims to make traffic stop and public safety data more transparent and interactive, with a particular focus on racial disparities in policing. By exploring this dashboard, Philadelphians can better understand how traffic stops impact their communities. Journalists and researchers can study policing patterns throughout the city. Community leaders, policymakers, and legal professionals can contextualize the harmful impacts of racially biased policing in the city to advocate for change.
No. This dashboard uses only anonymized public datasets which contain no personally identifiable information. Public traffic stop data does not identify either police officers or the people they stopped. Public traffic stop data also anonymizes the location of stops by listing the block number rather than the exact address. Data on shootings has basic demographic details of the people involved in shootings. Census data and the Vision Zero High Injury Network never publish personally identifiable information.
Yes, all code for this dashboard is open-source and available to the public on Github.
This dashboard derives data on race, ethnicity, and gender from two datasets: traffic stop data and Census data.
To connect traffic stop data and Census data, this dashboard represents gender, race, and ethnicity in the following ways:
Traffic stop data is managed by the Philadelphia Police Department (PPD) and available publicly on OpenDataPhilly. The data is collected from Vehicle and Pedestrian Investigation forms, also called 75-48As, which PPD is required to create any time they stop a vehicle (see PPD Directive 12.11, Appendix “B”). The forms include more than 70 fields and contain information about who was stopped and why. OpenDataPhilly anonymizes, cleans, and restricts some of those fields and releases the remaining information publicly.
The Philadelphia Police Department (PPD) updates the traffic stop data daily, but there is a two-week lag before data is made public on OpenDataPhilly for PPD’s operational approval processes. The public traffic stop data goes back to January 1, 2014.
The public traffic stop data includes:
To comply with the Driving Equality companion data ordinance, the Philadelphia Police Department (PPD) has begun to make more data public on OpenDataPhilly, including the reason(s) for some traffic stops and whether police found a weapon during the stop.
No, it is not the same. These two datasets are related but distinct. The public traffic stop data in this dashboard is released on OpenDataPhilly and only includes a subset of the data that police collect on each stop. A more comprehensive dataset, known as the Bailey dataset, is confidential and is compiled as required by the settlement agreement in the class-action lawsuit Bailey, et al. v. City of Philadelphia (2010). The confidential Bailey dataset contains more information than the PPD publishes publicly, including personally identifiable information and information about the officers who made each stop.
The race, ethnicity, and gender of drivers and passengers in traffic stop data is based on what is reported by police rather than how the person identifies. Police officers might not always accurately perceive or properly document information about the stops they make and the people they stop for a variety of reasons including human error.
To comply with the Driving Equality companion data ordinance, the Philadelphia Police Department (PPD) has begun to make more traffic stop data public on OpenDataPhilly, including partial information on the reason for each traffic stop and whether police found a gun during the stop. The PPD is slowly complying with the data requirements; however, this has resulted in missing reasons for some traffic stops in the data set at the time of this dashboard’s publication.
Additionally, the data set has some information that is unreliable. For example, the data includes the latitude and longitude of each stop, but the coordinates sometimes wrongly point to Disney World or Lake Erie.
While imperfect, traffic stop data is the most comprehensive information publicly available on police traffic enforcement in Philadelphia.
Yes. Because the traffic stop data contains one row per individual who has interacted with police during a vehicle or pedestrian stop, this dashboard filters the data to analyze only vehicle stops, then groups the data from a per-individual to per-vehicle basis. This dashboard uses the data from a per-vehicle basis to count the number of stops, such as stops within a location, stops across a time period, or stops of different demographic groups. For stops involving more than one person, the traffic stop data does not clarify who is a driver or passenger, so this dashboard estimates the driver’s demographic information by choosing the first individual listed as part of the stop.
The Defender has performed an in-depth analysis of traffic stop data in the past and determined that the majority of traffic stops consist of a driver and no passengers. When there is one passenger—the second most likely scenario after no passengers—that person is the same race as the driver in the majority of stops. The Defender did not see significant variation in the racial or gender demographics of people stopped, even when choosing the second person listed in a stop as the driver.
In order to analyze motor vehicle code violation data in the context of Driving Equality, the Defender reviewed the motor vehicle code that police used for each traffic stop when it was included. Because this is a free text field, not all codes are accurate, and often the field is left blank. The Defender grouped all variants within the statute for each motor vehicle code violation together when possible (for example, 1332 A and 1332A were grouped together). When the violation was not clear because a specific subsection of a statute was not identified or where there were citations to a nonexistent motor vehicle code violation, the Defender did not include that data in the motor vehicle code stop analysis. The Defender then grouped similar types of violations together. For example, motor vehicle code violations for careless driving, reckless driving, and speeding were grouped together for analysis. Finally, all motor vehicle code violations impacted by the Driving Equality Ordinance were isolated for analysis.
Furthermore, on May 1, 2024, the PPD consolidated two districts, expanding District 9 to include what used to be District 6. To reflect these new borders and create consistency, this dashboard has remapped traffic stops previously belonging to District 6 to reflect the new District 9 borders and PSAs. Unfortunately, the OpenDataPhilly location data is not completely reliable. Therefore, in this dashboard, the total number of traffic stops in District 9 does not match the sum of the number of traffic stops across the PSAs in District 9, as 16% of the District 9 traffic stops were erroneously geocoded to a null location or to a single location in Lake Erie (42.2243359, -80.50237161).
Frisks and searches are fields within the traffic stop data. “Intrusions” are not a field in the dataset. Rather, this is a term used in this dashboard to reflect both searches and frisks as intrusions by police on drivers, passengers, and vehicles. In this dashboard:
Traffic stop data is public and can be downloaded from OpenDataPhilly’s Vehicle and Pedestrian Investigations dataset. To analyze traffic stops, the data must be filtered to exclude pedestrian stops. The data documentation can be found here.
The High Injury Network (HIN) refers to the Philadelphia streets with the highest rates of fatalities and serious injuries per mile. The HIN represents 12% of all roadways in the city where 80% of fatal crashes or serious accidents happen. Vision Zero, a task force created by Mayor Jim Kenney in 2016, maintains HIN data. Vision Zero released the most recent HIN data in 2020 based on Street Centerline data from the Philadelphia Streets Department and 2014-2018 traffic crash data from PennDOT.
This dashboard uses the police-provided latitude and longitude of each traffic stop to count how many stops took place on the High Injury Network (HIN). In this dashboard, any traffic stop that is within approximately 10 meters of an HIN roadway is considered to be “on” the HIN. Importantly, this HIN analysis only includes traffic stops with valid location data. For example, this analysis excludes traffic stop data that is erroneously geocoded to a null location or to a single location in Lake Erie (42.2243359, -80.50237161).
High Injury Network (HIN) data is public and can be downloaded from OpenDataPhilly’s Vision Zero High Injury Network dataset. HIN methodology can be found here.
The U.S. Census Bureau manages all Census data including the 2020 Census data used in this dashboard. Once a decade, population data is collected via a national network of Census workers who survey nearly everyone in the U.S.
The Philadelphia demographic data used in this dashboard comes from the 2020 Census. Data was collected from March 12, 2020 until October 15, 2020 and was made public on April 26, 2021.
The only Census data used in this dashboard is demographic data on Philadelphia residents’ racial and ethnic identities, grouped at the census tract level. This dashboard also matches census tracts to their respective Philadelphia Police Department (PPD) police service areas (PSAs).
Census data is based on small neighborhood blocks called census tracts, while traffic stop data is organized into police districts and the police service areas (PSAs) within districts. To map census tracts onto PSAs, this dashboard uses a common statistical method known as the “centroid” method. Using Census shapefiles, this dashboard looks at the geographic coordinates of the centerpoint (or “centroid”) of each census tract. If the centroid of a census tract falls within a PSA, then that census tract’s demographic data is considered to be the demographic data of the PSA.
This dashboard avoids comparing who lives in a neighborhood to who police stop on the roads within that neighborhood. This is for several reasons, including:
Citywide, it may be useful to compare who lives in Philadelphia to who police stop in Philadelphia, but at the neighborhood level, such comparisons may be problematic.
This dashboard has some visualizations that sort police districts by the percentage of residents who are white, per Census data. In these visualizations, District 77 is excluded, as this district is the Philadelphia International Airport, has no residents, and thus has no Census data.
A citywide demographic profile of Philadelphia can be downloaded from the U.S. Census Bureau. Demographic data for each Philadelphia census tract can be downloaded from the U.S. Census Bureau.
This Github repository explains how to download Census data and map it to Philadelphia police service areas (PSAs).
Shootings data is managed by the Statistics Unit of the Philadelphia Police Department (PPD) and is collected from PPD reports.
Shootings data is updated daily with a one-day lag, or up to a three-day lag on the weekends, before data is made public on OpenDataPhilly. The data goes back to January 1, 2015.
Shootings data includes: the date and time of the shooting; the latitude, longitude, block, and police district where the shooting happened; the race, ethnicity, gender, and age of any person(s) shot; the type of wound; whether the shooting was fatal; whether the alleged shooter was injured or killed; whether a police officer was involved in the shooting; and the crime code of the shooting.
Shootings data only includes incidents in which someone was shot; it does not record incidents in which shots were fired but no one was hit. Some data may not be updated; for example, data may not reflect that some people initially characterized as wounded may later succumb to their injuries. Data on whether a shooter was injured may not be accurate. These limitations are sporadic and assumed to be insignificant.