Throughout this piece, precincts are grouped into NTAs using representative points. Turnout analysis relied on the precinct-level voter registration figures published by the New York State Board of Elections published before the primary, which are from February 2021 and 2025. The number of voters in a precinct is the total number of inactive and active voters enrolled with the Democratic Party in that precinct. New York City holds closed primaries, so anyone registered with a different party could not cast a ballot in the Democratic mayoral primary, but inactive registered Democrats may vote with affidavit ballots.
Income analysis used census block populations from the 2020 decennial census to apportion 2025 precinct-level results to census tracts. We then intersected precinct polygons with census blocks, computed each block piece’s share of its parent block (population where available, otherwise area), and normalized those shares to create weights to roll precincts into tracts. Precincts without block overlaps were assigned to the tract containing their point-on-surface, falling back to the nearest tract if needed. We then multiplied candidates’ precinct-level vote totals by these weights and summed to the tract level, verifying that citywide totals were preserved. Finally, we joined tract-level results to the 2023 five-year American Community Survey estimates to obtain tract-level vote and median household income.