Trader Joe's NYC Location Analysis
By: Logan Chalifour
Instructions
Where in New York City would you advise Trader Joe’s to open their next store?
Import Packages
We start by importing some packages needed for our analysis.
Define Functions
We define some functions that we will use throughout our notebook. The nyc-zip-code-tabulation-areas-polygons.geojson file is sourced from a repo on GitHub. Explanations of the code can be found inline.
Import Data
Let's look at the store_df with all retail food stores which are licensed by the Department of Agriculture and Markets in the state of New York. Naturally, we will have to filter this dataset to include only grocery stores in New York City since a lot of the rows are not true grocery stores or are outside of the five boroughs.
Now, let's look at the pop_2021_zip_df which we will use in hand with 2023 figures to compute the population growth rate for each zip code.
Let's also view the pop_2023_zip_df which has the most current population figures by zip code.
Lastly, let's look at the subway_df which has information about all the subway stops in the city.
Inputs and Assumptions
The lists below were created based on personal assumptions about what words should and should not be included in filters for grocery stores. Keywords were added/removed manually by iteratively viewing the filtered results. The assumptions can be edited as needed to change the resulting list of grocery stores for the analysis. Fuzzy matching was attempted, but too many intricacies in the store names still existed for filtering to work appropriately.
We also add two Trader Joe's stores that are missing from the dataset after a manual check. Please see here for info regarding the new stores that opened in Queens in 2021 and 2023. Coordinates for the stores were generated using the Mapquest site. All other Trader Joe's locations were checked and present in the dataset, so no need for additional entries.
Data Preparation
With the inputs above, we prepare the dataset for our analysis by filtering, dropping rows/columns, creating new columns, etc.
EDA
Let's now take a look at the resulting dataframes filtered_df representing all grocery stores in the city, tj_df which represents all Trader Joe's stores in the city, and zip_df with a summary of each zip code's store count and population figures.
In total, there are 4,631 grocery stores in all five boroughs of New York City; sixteen of which are Trader Joe's locations. Below, we see the most common grocery chains in New York City, with the most frequent being Key Food with 90 locations. Once again, we see Trader Joe's with sixteen locations across the city, making it the thirteenth most common chain by number of stores.
Individual Grocery Stores
Let's start by getting an idea of where Trader Joe's sixteen current stores are located across the city. For all the plots below, you can interactively learn more about each store by hovering over the points. You can also pan around the map while zooming in and out.
Now, let's get an idea of how all 4,631 grocery stores look on a map of New York City. Red points represent Trader Joe's, green points represent other major chains, and blue points represent non-major chain stores. Again, you may want to pan around while zooming in and out to explore further.
Zip Code Analysis
As one would expect, viewing over 4,000 stores on one plot can be a bit overwhelming, so we aggregate the number of stores by zip code for ease of viewing. Dark red zip codes represent a high number of stores, while lighter colors represent a lower number of stores. You can also see the Trader Joe's locations as red points to get a sense of where their stores already are.
What about the number of large chains instead of just stores? As we know, chain grocery stores are typically much larger and attract many more shoppers than small corner grocery stores. Having an idea of where there is a lack of large chains could signal where we should open a new Trader Joe's store.
In addition to the number of stores, let's look at the population by zip code, specifically for 2023.
Let's contextualize the plots above by dividing each zip code's population by the number of stores/chains. Ideally, we would want to place a new Trader Joe's store in a zip code that has an already high population-to-store or population-to-chain ratio. As a result, we would expect less competition among grocery stores and more traffic to our new store. Essentially, red zones on the plot represent high-potential opportunities for opening a new Trader Joe's location.
A common theme across the two previous plots is a higher population per store and chain in the boroughs outside of Manhattan. For example, certain zip codes in Staten Island have a population per store near 20k with higher ratios also in Queens. This makes sense because shoppers are more likely to travel long distances to stores because more people have cars outside of Manhattan. Thus, fewer stores are needed in comparison to Manhattan. Let's look at only Manhattan so the scale adjusts and we can see more variation in the map.
As you can see, zip codes within the Upper West Side and Upper East Side and other pockets such as Two Bridges typically have a higher population per store and/or chain. Certain zip codes in Washington Weights and Inwood have a high population per chain, but not per store. Thus, these may be good locations for a new store that we will keep in mind.
Another factor to consider when placing a new Trader Joe's store is making sure the population of a zip code is increasing. If possible, we may want to avoid opening a new location in a zip code where the population is shrinking and thus, there are fewer shoppers. The plot below highlights zip codes in red with high population growth rates from 2021 to 2023.
As you can see in the map above, Williamsburg (zip code: 11211) is clearly a booming neighborhood with a population growth of roughly 4.5% from 2021 to 2023. Most other neighborhoods have remained flat or moderately increased/decreased by less than a percent, likely due to individuals leaving the city during the height of COVID. Thus, Williamsburg may be a good spot for a new Trader Joe's location, even though it has one store already.
Zip Code Scoring
There are many different plots above that each tells a different story regarding New York City and where might be an optimal location for the next Trader Joe's store. To aggregate these findings, we build a Weighted Location Score that can range from 0-100. The score combines weighted normalized scores from zero to one for 2023 Population per Store, 2023 Population per Chain, and 2-year Population Growth. Currently, the weights are set in the function itself and they can be adjusted if needed:
Let's compute the location scores using the weights above, normalized at the borough level. The choice to normalize the scores by the borough as opposed to altogether was made because expected population per store/chain and overall population growth looks very different in densely populated urban areas such as Manhattan when compared to other more suburban boroughs such as Staten Island. For example, we see and would expect a higher population per store/chain in those suburban areas since people are more likely to get in their car and drive to stores further away, compared to most individuals in Manhattan without a car. As a result, we normalize the values by each borough between zero and one, accounting for variance.
Below, you see the zip_df including a new column with the overall Weighted Location Score. sorted from highest to lowest. A higher population per store, higher population per chain, and higher population growth rate will all contribute to a higher location score, which can range from zero to one hundred. Although no zip code received a score of one hundred, high location scores represent the “best” potential zip codes for a new Trader Joe’s store, while low location scores represent the “worst” zip codes for a new Trader Joe’s store.
With our scores derived, we visualize them on a map of the city, again with existing Trader Joe's stores represented by red points and now included subway stops in black. You can pan around the map and hover over points/zip codes to learn more about the data, including specific score breakdowns.
The maximum score we see is ~98 in the Bronx for zip code 10475. The lowest score we see is ~6 also in the Bronx for zip code 10452. Although subway proximity was not included in the Weighted Location Score, it's helpful to see where the stops are to get an understanding of how accessible a zip code may be for shoppers willing to travel via subway. As we know, the subway is the most popular form of transportation in New York City, and placing a new Trader Joe's store close to a subway increases the number of potential shoppers and thus store revenues.
FRESH Food Stores Zoning Boundaries
We also look at local tax incentives to help decide on the optimal location for a new Trader Joe's store. We pull data from NYC Open Data for FRESH boundaries which provide tax advantages to new grocery stores opening in certain areas of New York City. According to the dataset description, the benefits are as follows: "FRESH boundaries where zoning and discretionary tax incentives are available for the development, expansion and renovation of full line grocery stores and supermarkets. The FRESH II Text amendment adopted on 12/15/2021 expanded the program to other underserved neighborhoods of the Bronx, Brooklyn, Queens and Staten Island and modified the rules for certification of a FRESH food store." This should not be the primary driver for deciding where to open a new Trader Joe's location (which is why it wasn't included in the weighted location score in the previous section), but it can serve as a potential differentiator for deciding between two locations.
Above you see that almost the entirety of the Bronx and several across the rest of New York City are eligible for the FRESH tax-advantaged program. We will revisit this map later to help decide on an optimal location.
Final Recommendation
With the data provided above, I return the top-scoring zip code for each borough. I manually filtered out Manhattan’s highest-scoring zip code in Roosevelt’s Island (10044) since it’s unlikely residents from other zip codes would shop there due to its isolated nature. I also strip out a zip code in Washington Heights (10039) to keep the suggestion for Manhattan further downtown. This is acceptable since the location scores of the top three zip codes in Manhattan were all relatively close in the 60-70 range.
My recommendation is to open a new Trader Joe’s store in one of the zip codes above. As expected, there is no right or wrong answer here necessarily, but rather a relative strength of the recommendation. In this case, I would recommend placing the new store somewhere in Manhattan as opposed to one of the other boroughs. This is because nine of Trader Joe’s sixteen existing stores in New York City are located within Manhattan, suggesting it fits their customer base the best.
With a population of roughly 24,000 in 2023 and a two-year population growth of roughly .5%, Two Bridges of downtown Manhattan is an optimal location for a new Trader Joe’s store when compared to other zip codes. It has eleven existing grocery stores, only one of which is a large chain (CTown Supermarkets). Thus, the normalized scores for population per store and chain come in at ~34 and ~89 respectively, with a population growth rate scoring at ~64 – meaning the 10038-zip code represents a high potential opportunity with less competition from existing grocery stores and modest population growth. After applying the weights, we arrive at the weighted location score of ~62, the highest in Manhattan (after filtering out two zip codes) and the overall best recommendation for a new Trader Joe’s location. As you can see from the plot above, the closest Trader Joe’s is in the Lower East Side, so being too close to an existing store is not a concern. Additionally, there are plenty of subway stops that provide easy transportation to the Two Bridges area.
Lastly, Two Bridges is eligible for local tax incentives for new grocery stores within the FRESH zoning tax benefits shared in the previous section. Even though FRESH zoning boundaries were not included in the weighted location score, it is an important factor that can help us decide between multiple options. Because Two Bridges is eligible for the FRESH tax advantage, it ends up as an even better location for a new Trader Joe’s store.