"Exploratory Visualization of the NYC Restaurant Safety Inspection Data"

Alex Yuan Li
Posted on Oct 24, 2016

I. Introduction

Living in New York City for more than two years now, I always enjoy the various, delicious cuisines the city has to offer. One thing I always notice every time I enter a restaurant is the safety grade in huge letters on the window of the restaurant. The grading sure helps me filter out a lot of restaurants. So as an aspiring data scientist, I decided to look into the safety inspection system and see if I could find any interesting factors that influence the grading.

During an inspection, multiple citations will be given to a restaurant depending on safety and hygienic violations. Each citation corresponds to a violation score based on the violation category and its critical conditions. Then the inspection grade is given based upon the number of violations the restaurant receives after inspection. Restaurants with a score between 0 and 13 points will receive an A, those with 14 to 27 points will receive a B, and 28 or more points will receive a C.

The inspection data was obtained from the NYC Open Data library. Two features that jumped out immediately were the borough location of the restaurant and its cuisine type. This will be the starting point for my EDA.

II. Preprocessing the Data
Data Cleaning

The raw dataset was composed of over 440 thousand of inspection observations with 18 different factors/features. The following tasks were performed for the initial data cleaning:

- Removal of the nonsensical observations, such as blank restaurant names, absurd dates, etc

- Changing of the categorical variables into factors for visualization

- Creating additional features for analysis

Data Manipulation

After the data was cleaned, some preprocess manipulations were done for ease of analysis

- Due to the NYC Health Department grading process, not every restaurant receives a grade after an inspection; some will only receive a violation score. For this analysis, I converted the score to its respective grade.

- The raw data separates the restaurants into 85 different types of cuisine. I reduced and renamed the initial 85 categories of cuisine to 24 categories for ease of visualization

- The dataset contains multiple inspection visits per each restaurant. Since I was interested only in the latest inspection data, I filtered the dataset to obtain a unique inspection for each restaurant

III. Exploratory Analysis
Inspection Grade vs Location

One feature that was very important was the location of the restaurant, so I decided to visualize the number of restaurants by borough and their respective grades.

 

g1

Observations:

- Manhattan has the most restaurants of all five boroughs

- Grade A was is the most frequent rating in all boroughs

Inspection Grade vs Cuisine Type

The second prominent feature related to the inspection grade is the type of cuisine. So I visualized the relationship between the cuisine type and the respective grades.

g2

 

Observations:

- The grade distribution for the cuisine type is similar to the grade vs location plot, where the majority of restaurants receive grade A.

- The bar plot also displays the fact that American cuisine is the most common in NYC, followed Chinese and Pizza.

Inspection Grade vs Cuisine Type by Percentage

To explore deeper into the relationship between cuisine type and inspection grade, I decided to plot the percentage of the inspection grade within each cuisine.

g3

Observations:

- Juices/Smoothies/Ice Cream/Yogurt shops show the highest percentage of grade A scores, followed by French restaurants and then Cafe/Coffee/Tea shops.

- Latin/Hispanic restaurants show the lowest grade A percentage.

Violation Citations and Cuisine Type

Another important aspect I would like to explore is the number of violation citations a restaurant received during its latest inspection. The number of violation citations is plotted against the cuisine type in the similar plot as above, this could potentially provide additional information.

g4

Observations:

- This plot shown similar distribution compared to the inspection grade vs cuisine type plot. Small juice/ice cream shops and cafe/coffee shops received lowest number of citations (~2 citations/shop) with a relatively big margin compared to the rest.

- South Asian cuisines received the highest number of citations per restaurant. It had the second  lowest grade A percentage in the previous plot.

Furthermore, I would like to see this distributions across each individual borough, so I plotted a facet plot containing all five boroughs.

 

g5

Observations:

- The plots shown similar distributions across all five boroughs.

- There is no Korean restaurant in the Bronx, and no French restaurant in Staten Island recorded in the data.

Density Curve of Average Violation Score vs Location

The last aspect I wanted to explore was the violation score. It is important because it directly derives the inspection grade. I plotted the density of the average violation scores per restaurant, separated by the five boroughs.

 

g6

Observations:

- The distributions are very similar across all boroughs.

- The highest peak occurs at the lower range of grade A, meaning that most grade A restaurants received a score in this range. This shows that although every restaurant wants to get an A grade, most of them exert the least effort to get and maintain it.

Heatmap of Violation Score by Cuisine Type and Location

A heatmap was created to visualize the scores between cuisine and location

g7

Observations:

- The heatmap shows similar relationship as the facet map earlier, as it also shows the absence of Korean cuisine in Bronx and French cuisine in Staten Island.

- However, the heatmap visualizes extremas more clearly. The darker cells represent higher violation scores (worse hygiene), and lighter cells represent lower violation scores (better hygiene).

Zip Choropleth of Violation Score

To get a better idea of how the restaurant violation score spread throughout NYC, I plotted a choropleth based on the zipcode of each restaurant.

 

g8

Observations:

- Most of Staten Island, South Brooklyn, and East Queens (Flushing) show higher violation scores. Astoria and Long Island City show lower violation scores. Manhattan is spread with both high and lower violation scores.

IV. Conclusion and Future Work

- There is definitely a relationship between restaurant location, cuisine type, and the inspection grade. But statistical testing is needed to observe any significance between the factors.

- The location can be further divided by neighborhood for detailed examination of restaurants surrounding.

About Author

Alex Yuan Li

Alex Yuan Li

Alex Li received his Master of Science in Mechanical Engineering at Columbia University and Bachelor of Science in Chemical Engineering at University of Utah with professional experience in Research and Development in the Medical Device industry. He discovered...
View all posts by Alex Yuan Li >

Leave a Comment

Avatar
Eat out - at your own risk?: Analyzing NYC restaurant health inspection results using Tableau Public - Information Visualization January 11, 2019
[…] #2: NYC Restaurant Health Inspection Data – Visualizations and analysis by Alex Yuan Lin […]
Avatar
Raviteja November 4, 2016
Can you let me know how the violation score is calculated

View Posts by Categories


Our Recent Popular Posts


View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws 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 Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python python machine learning python scrapy python web scraping python webscraping Python Workshop R 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 Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp