NYC Restaurant Grades and Income

Final Projects, Visualization


NYC is home to thousands of restaurants across various cuisine types. Personally, I’m a very big fan of dining out at restaurants and trying new cuisines. In a previous lab, I created a map that attempted to examine the relationship between NYC restaurant grades by estimated annual household income, which I thought was incredibly interesting. However, I feel that I was not able to pull out as many trends as I would’ve liked to. I think this is largely due to not being able to filter through the different income ranges or restaurant grades. 

For my final project, I present a series of dashboards created by Tableau Public which attempt to re-examine the relationship between income and restaurant grades. My hypothesis is that lower income areas will tend to have restaurants with lower grades. Through a series of five dashboards, I attempt to support or reject my hypothesis.


QGIS – an open-source geographic information system application that supports viewing, editing, and analysis of geospatial data.

OpenRefine – an open source application for data cleanup and transformation to other formats.

Tableau Public – free visualization software that allows users to create interactive data visualizations.

Dataset from the DOHMH containing NYC restaurant grades.

Dataset used by American Community Surveys, created by downloading data Fact Finder by county and joined it manually to a census tract shapefile from the Department of Planning.


The datasets that I used to make my visualizations are from NYC Open Data and American Community Surveys websites. However, since I previously cleaned and used these datasets in my mapping lab, I simply exported them from Carto. Initially after exporting them I felt that I could simply upload the datafiles in Tableau and layer them on top of each other to create an interactive map, but this was not the case. Unfortunately, Tableau does not have the capability to handle multiple layers of geospatial data. To combat this issue, I worked with both my professor and class GA to find solutions for this issue. We attempted to use a SQL join in Carto to combine the tables into one but due to the size of the dataset (over 190,000+ records), this join did not work. Finally, we found a solution which involved using the intersection function on QGIS. This function runs an algorithm that clips a vector layer using the polygons of an additional polygon layer. This process took about fifteen minutes or so, and returned a single dataset that included all of the restaurant’s information and income data in one dataset. Then, I uploaded it to OpenRefine and cleaned the data once again by dropping any record that had missing information in any column. The next step was to actually create the visualizations using Tableau Public. 

The dataset contains six restaurant grades: A, B, C, N, P, and Z. Descriptions of the grades are provided below:

A – 0-13 points

B – 14-27 points

C – 28+ points

N – Not yet graded

P – Grade pending issued on re-opening following an initial inspection that resulted in a closure

Z – Grade Pending 

For these dashboards, I only focused on grades A, B, C, and P. There were only 2 restaurants with a grade of N so I excluded those. Restaurants with grade Z were not like another other grade and simply diluted the data so they were excluded as well.

Dashboard 1:

Figure 1: Map of NYC restaurants with Grades and Income per census tract.

The first visualization (Figure 1), is a map that points out all of the restaurants in the five boroughs. This map is interactive so that a user can filter by restaurant grade, borough, or cuisine type. Users can also click on any point and find information on the restaurant such as restaurant name, address, and income. Average income for the restaurants is based on the average annual income of residents in that census tract, not the restaurants’ annual income. This map does not do a good job at exploring the relationship between income and restaurant grade, but it does effectively show were the densest population of restaurants are.

Dashboard 2:

Figure 2: Dashboard showing total number of restaurants by cuisine type, total number per borough, and number by grade.

The second dashboard represents the total number of restaurants (Figure 2). The chart on the left shows the total number of restaurants by cuisine type, broken down by grade. A stacked bar chart is effective in comparing and representing the number of restaurants per grade for each cuisine type. The chart in the upper right corner, show the total number of restaurants by borough which reveals that Manhattan has the greatest number of restaurants. Finally, the chart in the bottom right is a filterable bar chart that show the number of restaurants per cuisine type by grade. These charts are meant to give a general overview of the types of restaurants that are plotted on the map.

Dashboard 3:

Figure 3: Dashboard showing income of restaurants by borough, income by zip code, and income by borough.

The third dashboard is meant to examine relationships between income, restaurant grades, and boroughs (Figure 3). The chart on the left represents the average income from each restaurant grade by Borough. These scores were calculated by using the income of every restaurant with a given grade and taking the average. For example, all the restaurants with a grade of A in all of Manhattan have an average income of $150,806. These averages are not specific to a given census tract, zip code, or area. The map in the upper right-hand corner represents the average income per zip code to use a reference. Unfortunately, Tableau does not recognize census tract as a geographic measure so the only way that I was able to represent income in the form of a map was by zip code. I felt that this decision was fine since the first map represented the income of each individual restaurant and the rest of the dashboard showed averages. Finally, the chart in the bottom right shows the average income per borough. This dashboard does an excellent job and pointing out that Manhattan has the highest income compared to others. Additionally, it does not seem that there are significant differences in income across restaurant grades per borough. In fact, it seems that the incomes are similar across restaurant grades with very small variations.

Dashboard 4: 

Figure 4: Dashboard showing the number of restaurants by cuisine type per borough, number of restaurants per grade, and per graded by borough.

The fourth dashboard (Figure 4) represents the number of restaurants by cuisine type per borough, number of restaurants per grade, and number of restaurants by grade per boroughs. I thought this dashboard would be necessary to give users a general idea of the number of restaurants that exist for each cuisine type. This dashboard seems to show that that the majority of restaurants have a grade of A. 

Dashboard 5: 

Figure 5: Dashboard showing the average income of restaurants by cuisine type.

This final dashboard (Figure 5) looks at the relationship between cuisine type and income. The entire dashboard is filterable by grade. The average income of is calculated by using the average income for every restaurant for that cuisine type and with a specific grade. I thought that these visualizations would be interesting to see if there was a relationship between income and cuisine type. However, since there are 83 different cuisine types, it’s difficult to see any clear trends.

UX Research:

After creating these five dashboards, I conducted two moderated in-person user interviews. Since the intended audience for the dashboards are NYC residents, my participants were NYC residents that dine at restaurants at least three times per month. The first participant was a female NYC resident from East village between the ages of 25-31 that is currently a graduate student attending Pratt Institute. The second participant was a male NYC resident from Williamsburg between the ages of 18-24 that is currently a graduate student at the New School.

The interviews began with an explanation of background information on NYC restaurant grades and the purpose of these visualization. After giving background information I followed a specific script, set of tasks, and questions. The script, task, and post-test questions are below:


“For this session, you will be looking at five dashboards comprised of graphs, charts, and maps representing data about NYC restaurant inspections grades. Please answer the following questions to the best of your ability. As you are you are moving throughout the dashboards please think out loud and feel free to ask any questions that come to mind.”


  1. Please take a few moments to explore the dashboards. When you feel that you have a general idea about what you can find with each dashboard, we will move onto the next task.
  2. Please take a look the restaurant map. Can you find and tell me which Borough has the highest number of restaurants for grades A, B, and C?
  3. Using the fourth dashboard, can you find the top five (highest number of restaurants) cuisine types for the borough with the highest number of restaurants?
  4. Take a few minutes to look at and examine these dashboards again. Based on what you see, would say that income has an effect on restaurant grades?

Post-Test Questions:

  1. What frustrated you about these dashboards?
  2. What did you like about these dashboards?
  3. If you had a magic wand, how would you improve these dashboards?
  4. Do you have any additional question or comments that you would like to share about the dashboards or tasks that you completed? 

UX Research Results: 

The user research interviews were crucial in findings flaws that existed within my design and dashboards. Some findings shared between the two interviews are:

  • Titles are not easily understood and require some explanation.
  • Dashboards that include income should have an explanation of how average income is calculated. This finding was specific to dashboard 3.
  • The colors and legend on the fourth dashboard were confusing since the colors that describe borough and grade are the same.
  • The final dashboard represents the same information in two different ways and feels unnecessary.

To combat these issues, I made adjustments to the titles across all the dashboards, added explanations to dashboards that include income, and corrected color and legend of the fourth dashboard. To address the final issue, I decided to drop the tree map layout all together. Both participants mentioned feeling like it was unnecessary, and that a bar chart was easier to understand. Finally, I included buttons for a user to move back and forth throughout the dashboards without clicking into other worksheets.

To view the final dashboard, click here.


The purpose of these dashboards were to answer the following question: 

“Do lower income areas have restaurants with lower grades?”

Based on these charts and graphs, I cannot easily identify a relationship between NYC restaurant grades and income. I strongly believe that this may be due to the simple fact there is no clear relationship so I will have to reject my hypothesis. One of the questions from my UX research asked the participants to use the dashboards to try to find a relationship between income and restaurant grade. Both participants said that they could not identify any relationship. 

However, these dashboards do reveal that most NYC restaurants receive a grade of A. I did some more research on this and found that restaurants typically go through a cycle of inspections. An initial inspection in which the restaurant earns an A and then a reinspection that results in an A, B, or C. A restaurant has two chances to earn an A in every inspection cycle, but if it does not earn one the first time it is only scored and ungraded. Typically, the restaurant is then given a month until an unannounced reinspection. If the grade is a B or C then the restaurant will be given a grade card and a grade pending card. The restaurant can post either card until it has an opportunity to be heard at the Office of Administrative Trials and Hearings Health Tribunal. (Bloomberg & Farley, 2012)

This can help to explain the large number of restaurants that received A grades. Essentially, restaurants are re-inspected until they can consistently receive an A or are closed.


Overall, I really enjoyed creating these visualizations and conducting analyses on this topic. Both of my UX research participants were incredibly interested in the topic as all since they liked to dine out at restaurants. I think anyone that enjoys exploring different NYC restaurants would enjoy looking these dashboards. 

Although I still have some questions that remain regarding income and grades, some future next steps for this project would be to take a deeper dive into a relationship between restaurant cuisine types and grades received. I think that there may be some potential relationship that exists between cuisine and income. For example, the “Salads” cuisine type had the highest income for both grades B and C. Additionally, it may also have been helpful to looking at a one specific borough for these dashboards. Perhaps a relationship would maybe exist in one borough instead of across all five. 


Bloomberg, M. R., & Farley, T. R. (2012, March). How We Score and Grade. Retrieved December 14, 2019, from