Wine 101: Gathering Data From Vivino

Posted on Sep 5, 2021
The skills I demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
Github | LinkedIn

Background & Inspiration

Are you an avid wine-lover? Or are you a wine newbie just like me? Either way, you're in the right place! As someone just starting to enjoy and learn wine drinking, I wanted to gather more data and insight into picking the best value wines that are not too expensive, but still have a high rating. So I decided to web scrape Vivino website.

What is Vivino? It is an online wine marketplace and a wine app where people can both purchase and keep track of the wine they drink. It was founded in Copenhagen, Denmark, and launched its apps on iPhone and Android starting in 2011. Since then, Vivino has gone through multiple roundings of investment to grow and now has a database containing more than 13 million different wines and over 50 million users. I personally have been very satisfied with their app, which is why I decided to scrape the website.

Web Scraping Process

There are multiple ways to scrape a website using Python including Beautiful Soup, Scrapy, Selenium, etc. For this project, I chose to use Selenium since it is compatible with an infinite scroll that Vivino utilizes. Since I could not scrape the entire Vivino website due to its database size, the scraped data was limited to red wines that are under $450, which was around 45,000 records. The fields I scraped were as follows:

  • Price: price of the wine (in USD)
  • Year: year the wine was made
  • Country: country the wine was made in
  • Overall Rating: average rating (out of 5)
  • Overall Rating Count: count of all ratings
  • Wine Notes (wine flavor & aroma index):
    • Light-Bold
    • Smooth-Tannic
    • Dry-Sweet
    • Soft-Acidic

One thing to note here is that the Xpath used to scrape wine notes had values of the left end of the bar, which was of length 15 out of the whole bar of 100. So once they were scraped, I had to add 7.5 in order to obtain the middle value of the bar.

Data Analysis

First, I wanted to see how wine price compared to the overall rating. So I plotted the overall rating of all scraped wine data against their respective prices as shown in Figure 1. To no surprise, higher-rated wines were shown to be more expensive or vice-versa, more expensive wines had higher ratings. It was interesting to see about 100 wines that had lower than a 3.0 rating, which is very bad considering most people don't tend to give ratings below a 3.0 as shown in Figure 2. The spread of overall ratings had a very heavy concentration of ratings around 4.0, which makes sense since I assume many wines are not perfect (5.0), yet not horrible (below 3.0).

Figure 1

Wine 101: Gathering Data From Vivino

Figure 2

Wine 101: Gathering Data From Vivino

As new wine-lovers, the section I decided to focus on first was where wines have good ratings (over 4.5) that are on the cheaper side (under $100), which is highlighted by a green box in Figure 1. As seen in Figure 3, I plotted price vs. rating for the best value wines by country and the United States seemed to be dominating in the best value wine category.

Figure 3

Wine 101: Gathering Data From Vivino

Going back to looking at the overall scraped data, I looked at the top 10 origin countries of wines on Vivino under $450 as shown in Figure 4. Most wines seemed to have been made in United States, France, and Italy with more than 9,000 wines each, trailing by Spain, Argentina, Australia, Portugal, and Chile with more than 1,000 wines. Thus, I decided to take a deeper look at those 8 countries.

Figure 4

First, I created a boxplot to see how the prices compared across the 8 countries as shown in Figure 5. Wines that were over $200 were excluded from the boxplot since it was pretty sparse and didn't add much value. The median and 3rd quartile prices of wine in France, Italy, and United States were much higher at the $40-$50 range compared to other countries at about $25. I also looked at the mean price of wines by country and saw a similar trend where the top 3 mean prices were from France, United States, and Italy.

Figure 5

Wine 101: Gathering Data From Vivino

Then I plotted a similar boxplot on the top 8 countries but on the overall rating as shown in Figure 6. This was a little less exciting at first since as seen in Figure 2 above, there was a heavy concentration of ratings around the 4.0 range. However, I ran some t-tests between different countries to see if the median ratings were significantly different from each other and all of them had p-values that were much lower than 0.05 which meant they were significantly different. The highest one was between Portugal and Spain which had a p-value of 0.01, but most of the combinations were very small, which was interesting.

Figure 6

Observations from Data

I then looked into each wine note to see what scale had the best price and rating. Wine notes are the nuances in wine flavor and aroma, which Vivino divides into four categories: light-bold, smooth-tannic, dry-sweet, and soft-acidic. Before going into each of the wine notes, I would like to caveat that the analysis below is limited to the data I scraped (red wines under $450) from Vivino and is only representative of that group.

By looking at each of the wine notes, the following were observed:

  • Light-bold: There were a lot more wines that were bold than light as seen in Figure 7. Bolder wines were a bit more expensive although this could be a result of just having more wine on the bolder side.
  • Smooth-tannic: The wines were a more spread out with a little skewness towards tannic side as seen in Figure 8.
  • Dry-Sweet: Since red wines are generally more dry than sweet (which may be very obvious to people who are already avid wine-drinkers), the scale in Figure 9 doesn't even have 70+ due to the scarcity.
  • Soft-Acidic: This note was a lot more spread out, but still skewed towards acidic as shown in Figure 10.

Figure 7

Figure 8

Figure 9

Figure 10

Data on Best Values Wines

Lastly, I looked at the best values wines (under $100 and over 4.5 rating) with soft-acidic on the x-axis, smooth-tannic on the y-axis, and light-bold scale on the z-axis as shown in Figure 11. The dry-sweet scale has been excluded from this since most red wines from the scraped data were classified as dry. In the 3D scatter plot, there were clearly two big clusters of best value wines as follows:

  • Cluster 1:
    • Light-bold: 60-70
    • Smooth-tannic: 20-40
    • Soft-acidic: 60
  • Cluster 2:
    • Light-bold: 90
    • Smooth-tannic: 60
    • Soft-acidic: 60

Figure 11


After looking through the scraped red wine data from Vivino that are under $450, it seems like you don't really need to pay hundreds of dollars to enjoy good wine. If you are like me who is just getting into wine and are looking for the best value wines that have over a rating over 4.5 and are under $100, look for these traits:

  • From United States
  • Light-bold scale > 80
  • Smooth-tannic scale between 50 and 70
  • Dry-sweet scale < 15
  • Soft-acidic scale between 50 and 70

Based on that criteria, I have selected 4 wines below that the new wine lovers can try to begin with although I recommend trying wines that have different wine note scales to find the set of notes that best fit each person's taste buds (Vivino app has a great feature that keeps track of wines you drink):

  • Duckhorn Howell Mountain Cabernet Sauvignon 2016
  • Pursued by Bear Cabernet Sauvignon 2015
  • Orin Swift Papillon 2018
  • Kosta Browne Sonoma Coast Pinot Noir 2017

Vivino could use the information from this analysis to create discounts and/or recommendations based on "years of experience with wine". In order to be used for that purpose though, this analysis will need to be expanded to incorporate other types of wines so that there are much more variations of wine notes. If that makes the data too big, the analysis could possibly be limited to cheaper wines (maybe under $100 or $200) so it doesn't take forever to web scrape.

About Author

William Han

Will Han is a dynamic cross-functional leader with 5+ years of experience in timely project successes in healthcare and real estate industry. Proven track record in client management with effective communication, understanding and thoroughly meeting the stakeholder expectations.
View all posts by William Han >

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