Introduction

The data used in this publication stems from a data set titled “Crime Incidents in 2025”. The data that is presented is of reported crimes in the Washington D.C. city limits for the year 2025 between months January to December. The recorded information in the data set for each reported crime includes Central Complaint Number, Report Date, Start Date, End Date, Block, Offense, Method, Shift, Ward, Advisory Neighborhood Commission, District, Police Service Area, Neighborhood Cluster, Block Group, Census Tract, Voting Precinct, Business Improvement District, Block X Coordinate, Block Y Coordinate, Latitude, and Longitude. This data set is housed in the Open Data DC dashboard which houses a number of public records data sets for view by anyone who wishes without need for a FOIA (Freedom of Information Act) request.

Findings

The tabs below work to analyze the reported crime statistics for Washington D.C. in the 2025 calendar year.

First Tab

#--- Offenses Reported During The Year Of 2025 ---#

plot_ly(offensecount, labels = ~OFFENSE, values = ~n) %>%
  add_pie(hole=0.6) %>%
  layout(title="Offenses Reported During The Year Of 2025") %>%
  layout(annotations=list(text=paste0("Total Offenses Reported: \n",
                                      scales::comma(sum(offensecount$n))),
                          "showarrow"=F))

Second Tab

#--- Total Crimes Reported Broken Down By Hour For 2025 ---#
hours_df <- df %>%
  select(REPORT_DAT) %>%
  mutate(hour24 = hour(ymd_hms(REPORT_DAT))) %>%
  group_by(hour24) %>%
  summarize (n = length(REPORT_DAT), .groups = 'keep') %>%
  data.frame()

x_axis_labels = min(hours_df$hour24):max(hours_df$hour24)

hi_lo <- hours_df %>%
  filter(n == min(n) | n == max(n)) %>%
  data.frame()

ggplot(hours_df, aes(x = hour24, y = n)) +
  geom_line(color='black', size=1) +
  geom_point(shape=21, size=4, color='red', fill='white') +
  labs(x="Hour", y="Total Crimes Reported", title="Total Crimes Reported Broken Down By Hour For 2025", caption="Source: https://opendata.dc.gov/datasets/DCGIS::crime-incidents-in-2025/explore?showTable=true") +
  scale_y_continuous(labels=comma) +
  theme_light() +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_x_continuous(labels = x_axis_labels, breaks = x_axis_labels, minor_breaks = NULL) +
  geom_point(data = hi_lo, aes(x = hour24, y = n), shape=21, size=4, fill='green', color='red') +
  geom_label_repel(aes(label= ifelse(n == max(n) | n == min(n), n , "")),
                   box.padding = 3,
                   point.padding = 3, size=4, 
                   color='Grey22', segment.color ='Dark Blue')

Third Tab

#--- Reported Crimes by Day of the Week for 2025 Calander Year ---#

days_df <- df %>%
  select(REPORT_DAT) %>%
  mutate(
    month = month(ymd_hms(REPORT_DAT), label=TRUE, abbr = TRUE),
    dayoftheweek = weekdays(ymd_hms(REPORT_DAT))) %>%
  group_by(month, dayoftheweek) %>%
  summarise(n = length(REPORT_DAT), .groups='keep') %>%
  data.frame()

mylevels <- c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
days_df$dayoftheweek <- factor(days_df$dayoftheweek, levels = mylevels)

breaks <- c(seq(0,max(days_df$n), by=25))

g <- ggplot(days_df, aes(x = month, y = dayoftheweek, fill=n)) +
  geom_tile(color="black") +
  geom_text(aes(label=comma(n))) +
  coord_equal(ratio=1) +
  labs(title = "Reported Crimes by Day of the Week for 2025 Calander Year",
       x= "Month",
       y= "Days of the Week",
       fill = "Reported Crimes") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_y_discrete(limits = rev(levels(days_df$dayoftheweek))) +
  scale_fill_continuous(low="white", high="red", breaks = breaks) +
  guides(fill = guide_legend(reverse=TRUE, override.aes = list(colour="black")))

g

Fourth Tab

#--- Top Locations of Reported Crimes ---#
blockcount <- df %>%
  count(BLOCK, sort = TRUE)

top5 <- blockcount %>%
  slice_head(n=5)

top5$BLOCK <- str_wrap(top5$BLOCK, width = 20)

ggplot(top5, aes(x = reorder(BLOCK, -n), y = n)) +
  geom_bar(stat="identity", colour="black", fill="gray76") +
  labs(title = "Top 5 Locations of Reported Crimes",
       x = "Street Name",
       y = "Total Crimes Reported") +
  theme(plot.title = element_text(hjust = 0.5),
        axis.text.x = element_text(angle = 45, hjust = 1))

Fifth Tab

#---- Reported Crimes Committed with a Weapon vs. Without in 2025 ---#
methodcount <- df %>%
  mutate(METHOD = ifelse(METHOD %in% c("GUN", "KNIFE"), "Weapon", " No Weapon")) %>%
  count(METHOD) %>%
  mutate(percent_of_total = n/sum(n))


ggplot(data = methodcount,aes(x="", y = n, fill = METHOD)) +
  geom_bar(stat = "identity", position = "fill") +
  coord_polar(theta= "y", start=0) +
  labs(fill = "Method of Committing Crime", x = NULL, y = NULL, title = "Reported Crimes with a Weapon vs. Without in 2025") +
  theme_light() +
  theme(plot.title = element_text(hjust = 0.5),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.grid = element_blank()) +
  scale_fill_brewer(palette = "Reds") +
  geom_text(aes(label = scales::percent(percent_of_total, accuracy = 0.01)),
            size=4,
            position=position_fill(vjust = 0.5))

Conclusion

As stated above, the tabs that are shown in this analysis cover all reported crimes in Washington D.C. during the 2025 calendar year. The first tab through the use of a doughnut plot describes the total amount of offenses reported during the 2025 calendar year broken out into percentages of the total reported crimes. Based upon the information presented it is clear to see that overall, while there are different categories that theft may fall under, theft is the most prevalent type of reported crime in the metropolitan community.

The Second Chart shows, with the use of a line graph, the total number of Crimes reported in Washington D.C. broken down by hour for the 2025 calendar year. This chart provides some useful insight in terms of allowing police to know when to allocate a larger proportion of officers between day vs night shift. Crime reports appear to steadily increase in trend and fluctuate at higher levels for the year from 11:00 hours to 2:00 Hours. The most common hour to have a crime reported being 17:00 hours or 5:00 P.M. where 1,425 total crimes were reported. With most reported crimes occuring in late afternoon and evening hours it would be wise for Washington D.C. Metropolitan Police to ensure that they have a larger proportion of officers on shift in the late afternoon and night time hours.

The Third Chart shows a deeper analysis by way of a heat map the largest amount of crimes reported by day of the week for each of the months in 2025. This map not only shows a better analysis of what days of the week are more likely to see higher crime rates but also in turn does a deeper analysis on the time of year that you can expect to see higher levels of crime reported. While there are certain outlines like 434 crimes reported throughout the Month of August on Fridays specifically, it appears that the most likely day to have crimes reported would be during the days of Tuesday and Wednesday which have the most consistent higher range of crimes reported on these days of the week for every month throughout the calendar year. We can also see in the analysis of this chart that crimes are more frequent in nature during the months of April to August. In other words there should be an expectation for higher crime levels once the weather in the area is overall at warmer degrees in the spring and summer months.The total increase of crimes during these months may be in part due to the fact that there is an increase in tourism during these months which equates to larger numbers of individuals in the city limits.

The Fourth Chart shows an overall analysis further into the location of the crimes reported to help discover areas of the city that may need to be watched by police for additional attention due to a higher overall number of crimes reported. It can also be used by the public as an understanding of where certain parts of the city may be more dangerous than others. In this analysis we can see that the top five block locations for reported crimes have over 100 crimes reported with he top block location reaching over 275 reported crimes in one year. With this analysis, public officials should note these areas to pay closer attention to in terms of researching ways to improve the area through possible additional policing or certain community initiatives to try to decrease overall crime.

Finally, the fifth chart shows the overall percentage of crimes committed that were committed with a weapon. The data used for this analysis came from the METHOD category provided in the data set which covered reported uses of knives, guns, or no weapons at all. The breakdown in this analysis overall shows that there is a a small proportion overall of crimes that are attempted to be committed overall with respect to the total reported numbers.

This analysis is only a small portion of the total quantity of ways to asses this data and the crimes that were committed during 2025 in Washington D.C. This data should continue to be analyzed year over year to check against recent crime statistics to see what efforts implemented by city government have helped to decrease crime efforts, and see if there are any new hot spots where police may need to re target their efforts for patrols. This data set overall provides a great analysis of the most recent crime activity and is essential for decision on how city officials will conduct their buisness moving forward.