article · ~3 min · live data

The day shape of Philly crime

0 Part 1 + Part 2 incidents since 2024-01-01, six categories, twenty-four hours each. Where each curve peaks tells you what kind of city Philly is at a given hour.

All categories, ranked by volume

The top 0 categories on the Carto incidents table since 2024-01-01, ranked by dispatch count. The bar chart below reads top-down by volume; the hour-of-day panels in the next section take the same categories one at a time.

The hour-of-day fingerprints

Each panel's bar chart shows dispatches by hour 0–23. The sparkline above repeats the shape compactly so you can compare curves at a glance. The peak / quiet annotations are derived from the max and min hour bins.

Reading the curves

The peak / quiet labels under each panel come from the max and min hour bins in that category's dispatch count. The shapes themselves are what the data shows: Thefts peak mid-afternoon and again around evening rush. Other Assaults bow toward evening and overnight, with a secondary peak in the small hours. Aggravated Assault Firearm skews later still. Burglary Residential tilts toward daytime hours. Narcotic violations cluster in a narrow band.

Hour-of-day dispatch counts can't on their own distinguish underlying activity from reporting patterns or enforcement scheduling — each peak is when the dispatch was recorded, not necessarily when the underlying event occurred. The data shows the shape; the why is the work of pairing it with other records. For the geography of these categories — which districts carry which load — see Where shots land.

Data Sources

Primary dataset: crime-incidents (incidents_part1_part2) via phl.carto.com. Dispatches since 2024-01-01. Fetched at runtime through the Cloudflare Worker proxy.

Queries: CRIME_VIEWS.topCategories (with since = '2024-01-01') for the top-0 category ranking, and CRIME_VIEWS.byHourOfDay (same since, categoryLike per panel) called once per panel category. Both defined in src/lib/data/datasets/philly-crime.ts.

Methodology & caveats: The hour field is dispatch hour 0–23; Carto omits rows for hours with zero dispatches in a category, so the loader backfills zeros to keep each panel's x-axis consistent. Per-incident demographic and outcome detail isn't published — see data we'd like to find.