Breaking down the coffee bean

Ashish Sharma
Posted on Nov 4, 2019


No matter what lies ahead and how the day is intended to unfold, a good chunk of the world's population NEED to begin their day with … coffee! That uplifted persona after the very first sip is nothing short of fascinating.  What is it about this beverage that kickstarts us? This project is the commencement of my journey on comprehending the characteristics of a great "Cup of Joe"!


Main ingredients

As soon as I began my search for knowing more, I was quickly humbled by how much lies behind what might be considered just another commodity… Taking baby steps, I steered my focus to to two simple aspects: what are the main components of coffee and on what dimensions do coffee connoisseurs evaluate coffee. I found both, among more, on and used Scrapy to obtain the data I needed for my initial analysis.

Coffee Review conducts blind, expert cuppings of coffees across the globe and report their findings in the form of 100-point reviews, while educating readers about coffee with in-depth tasting reports each month, themed around coffee origins, issues, and factors that influence coffee quality and character.




The data elements required for the analysis were present in the Advanced Search page of the website where coffees were listed in reverse chronological order by review date. Each listing on this page contained the product that was reviewed along with key fields such as roaster, review date and price. The complete review along with other characteristic fields were a click away labelled "Read Complete Review".

Having deciphered the pattern to derive all pages contained in the search as well as the urls for the complete review page corresponding to each coffee review, I chose Scrapy as the framework over Selenium.

I developed a Scrapy items script to capture the elements required and a Scrapy spider to crawl the html pages present in the Advanced Search section. The overall package also contained the code for the settings and pipelines scripts to execute the workflow for the scrapping process.

Elements were finally extracted in a csv file that was them imported into Python dataframes to cleansing and analysis. Visualizations were created using Matplotlib and Seaborn.


At a glance...


Coffee Characteristics


Essential to any coffee, these characteristics were the primary focus of the reviews conducted by Coffee Review. These traditional set of 5 are the standard descriptive categories evaluated.

Aroma: Indicative of how intense and pleasurable is the fragrance when the nose first descends over the cup

Acidity: At best it is a sweetly tart vibrancy that lifts the coffee and pleasurably stretches its range and dimension. Without acidity coffee is dull and lifeless.

Body: the sensation of heaviness, richness, or thickness and associated texture when one tastes coffee

Flavor and Aftertaste: Include everything not suitably described under the categories aroma, acidity and body.


Not surprisingly, all the characteristics discussed above showed a strong correlation to the rating. However, acidity and flavor stood out in their correlations to the rating, relative to others. For each for 5 characteristics, ratings were reflective of both quantity (intensity) and quality (pleasantness).


Roast concentration of top-rated coffees


A highly rated coffee secured a review rating of 94 and above. Curious to see the breakdown of such coffees based on roast, I generated this bar plot to help aid the analysis. By a significant margin, Medium-Light seems to be the most frequently occurring roast in highly rated coffees, followed by the Medium roast while Dark constituting the least occurring roast among such highly rated coffees.

Another lens on these roast categories as compared to their respective review rating reveals that the degree or darkness of roast dramatically affects a coffee's flavor profile. Interesting to note on the Medium-Light aroma is the rating's almost equal distribution on each side of its median. A majority of the coffees reviewed have their ratings lying between the late 80's and early 90's, with a handful among the top 20. for perspective, I've positioned some of our favorite household brands along this distribution, the likes which contain Starbucks, Folgers, Peet's Coffee, Maxwell House and Stumptown.


Review Score Concentration

A majority of the coffees reviewed have their ratings lying between the late 80's and early 90's, with a handful among the top 20. for perspective, I've positioned some of our favorite household brands along this distribution, the likes which contain Starbucks, Folgers, Peet's Coffee, Maxwell House and Stumptown.


What's brewing

Some of my immediate next steps to further this initial assessment and study include:

  • What makes up acidity? Analysis of its components and identification of biggest drivers.
  • Investigate how coffee contributes to flavor. Interesting to see how perception data can be collected and analyzed…
  • Incorporate location data to investigate bean characteristics that are determined by environmental conditions


So... What's your cup of tea?!



Coffee Review:


About Author

Ashish Sharma

Ashish Sharma

Ashish Sharma is currently a Fellow at the New York City Data Science Academy NYCDSA. Enthusiastic about helping companies elevate their data capabilities and delivering value, Mr. Sharma has worked as a Business and Technology Consultant through most...
View all posts by Ashish Sharma >

Related Articles

Leave a Comment

No comments found.

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 Online Training Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python Python Data Analysis 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