Data Study on NYC's Seven Major Felonies

Posted on Feb 5, 2018
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
Illustration by Greg Groesch/The Washington Times

My Motivation

Even though people in New York City are street-smart, crime is always a possibility and certain areas are more dangerous than others. But where are these unsafe areas? What crimes are taking place and when are they happening? Using NYPD’s Historic Complaint data-set, I decided to look into these questions. The application can be found on my page. The code used to create and run the application can be found on my Github.

Note: Unfortunately due to limitations and the size of the dataset, I had to limit my data so that it could be hosted on its servers.


The Questions

As I was envisioning the app, I thought of 6 questions that I wanted my app to answer:

  1. Where do crimes occur and what are they?
  2. How have crime rates, after controlling for population, changed from 2006 to 2016?
  3. Which months are crimes more likely to occur?
  4. Do certain crimes occur more frequently on weekends or weekdays?
  5. Is time of day a factor in the frequency of crimes?
  6. Do any of these factors differ between boroughs?


The Data Set

Where it Came From:

I used the NYPD Historic Complaint Data, which includes information on all felonies, misdemeanors, and violations that have been reported to the NYPD from the start of 2006 to the end of 2016. The data set included information about the crime, such as the date, time, a description of the crime committed, and the location of the incident (including latitude and longitude). I focused on seven major felonies that occur in NYC: Murder, Rape, Felony Assault, Grand Larceny, Grand Larceny of Motor Vehicle, Robbery, and Burglary.

I also knew, when looking at the crime rates for each borough, I would have to control for population. In order to do this, I found the NYC borough population for 2010 and its estimate for 2016. In order to estimate the population for the missing years, I used the logistic growth formula.

Cleaning the Data:

When I first downloaded the dataset, there were around 5.6 million observations. I initially filtered the rows to include just the seven offenses I was focusing on. After inspecting the data, I noticed that a number of the offenses had missing labels or were labeled inaccurately (e.g.: the row’s three digit code did not match the listed offense description). I went through the data and made sure what I was collecting was accurate and inclusive.

After making the appropriate edits to include and correct for these entries, I created helper columns to provide additional filtering for the mapping and statistics of these crimes. I also consolidated information together from certain columns to add information to the maps, and dropped the unnecessary variables that were no longer needed. Once my data was cleaned, having just over 1.2 million observations, I added in my estimated population to the cleaned file. Once I had my data, I began coding the shiny app.


Data Visualizations and Statistics:

The Cluster Map:

Data Study on NYC's Seven Major Felonies

The cluster map allows the user to see the location and details of specific crimes by filtering based on month and year, type and by the borough. As you zoom into a location, the clusters move apart. If you zoom in enough, you are able to see individual pinpoints on where specific crimes occurred for that time frame.


Data Study on NYC's Seven Major Felonies

The icons are color coordinated based on crime type, making it easier to see what types of crimes occur near them when they do not have a specific crime filter set. If you click on a crime pinpoint, information appears stating the type of crime that was committed, where the incident occurred, and when it happened.


Data Study on NYC's Seven Major Felonies

In order to help a person find crime in a specific area, I add an address lookup feature. This allows users to quickly focus their search to specific areas, rather than have to zoom in and constantly having to orient themselves to find their area of interest. 


The Heat Map:

In order to provide a more high-level overview on where crimes occur in the borough, I created a heat map. Although you are not able to see the specific details about each individual crime, it lets the user know generally where crimes occur and how the location changes as time passes.  The map can be filtered with the same specifications as the cluster map.


Crime Trends Based on Crime Type and Borough 

When I started the assignment, I wanted to accomplish two tasks in terms of statistics. I wanted to be able compare trends of specific crimes within each borough, as well as see if a specific crime differed between borough. In order to accomplish this, I created two statistics tabs, focusing on each question specifically. Both tabs provide information on the overall trend of crimes, per 10,000 residents, as well as the frequency that specific crimes occur within various months, day of the weeks, or time of day.

Comparing Crimes Within a Borough:


In this tab, you can pick a borough to focus on and  see how the crime rates compare within each borough. The graphs measure the total amount of crimes that occurred within that time factor (year, month, day of the week, or time) and displays how the percentages changes. So for the example above, we can see that the number of  felony assaults in Staten Island have been increasing, per 10,000 residents, while the number of grand larcenies have been staying the same, despite a dip for the years 2009 - 2011.

Grand larceny also appears to increase as the year goes on, while assaults are more frequent in the spring and early summer. We can also see that assaults are  more likely to occur on the weekends, while grand larceny is more frequent during the week days. The final notable takeaway from this example is that felony assaults are more frequent in the early morning and late evening, while grand larceny generally occurs in the late morning to early evening.

Comparing Boroughs for a Specific Crime

In this tab, we can compare specific crimes and whether or not there are significant differences between the borough.  So for this example, we can see the number of robberies have been going down for almost all the boroughs, with the exception being Staten Island. However, we can also see that the likelihood that robberies take place, controlling for months, days of the week and time of day, don't appear to differ very much between boroughs. 


Viewing the Data

On the final tab, you can view the underlying data, filtering based on the types of crimes, the day of the week, the time of day, as well as for specific boroughs. Similar to cluster map, it provides you with the date the crime was committed, the time of day, the type of crime, and where it occurs. You can filter the data based on these categories as well.


Further Exploration

As I continue to add onto this application, I would like to include information about the income distribution for each borough. I would also like to look into whether educational spending has an impact on crimes rates within each borough. I also would like to add weather as a factor that I could potentially control for, seeing its impact on crime rates. This app is only for trends and analysis, but I add more data to the application, I would like to run regressions, measuring the effects of income inequality, education spending, and gentrification on crime rates for each borough.

About Author

Michael Goldman

Michael Goldman is an experienced data analyst with a background in economics, mathematics, and computer science (Python, R, SQL, Stata, Java, and VBA). He has worked as a Data Analyst for NERA Economic Consulting, providing expert testimony and...
View all posts by Michael Goldman >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI