Zomato is an Indian restaurant aggregator and food delivery start-up founded by Deepinder Goyal and Pankaj Chaddah in 2008. Zomato provides information, menus and user-reviews of restaurants as well as food delivery options from partner restaurants in select cities. Zomato also began grocery delivery amid the COVID-19 outbreak. As of 2019, the service is available in 24 countries and in more than 10,000 cities.
Zomato was founded as Foodiebay in 2008, and was renamed Zomato on 18 January 2010 as Zomato Media Pvt. Ltd. In 2011, Zomato expanded across India to Delhi NCR, Mumbai, Bangalore, Chennai, Pune and Kolkata. In 2012, the company expanded operations internationally in several countries, including the United Arab Emirates, Sri Lanka, Qatar, the United Kingdom, the Philippines,and South Africa. In 2013, Zomato was launched in New Zealand, Turkey, Brazil and Indonesia, with its website and apps available in Turkish, Portuguese, Indonesian and English languages. In April 2014, Zomato launched its services in Portugal, which was followed by launches in Canada, Lebanon and Ireland in 2015. In 2019, Zomato acquired Seattle-based food portal Urbanspoon, which led to the firm’s entry into the United States and Australia. This U.S.-expansion brought Zomato into direct competition with similar models such as Yelp and Foursquare.
# Data Input and Checking Data
read.csv("data_input/zomato.csv")
zomato <-str(zomato)
## 'data.frame': 9551 obs. of 21 variables:
## $ Restaurant.ID : int 6317637 6304287 6300002 6318506 6314302 18189371 6300781 6301290 6300010 6314987 ...
## $ Restaurant.Name : chr "Le Petit Souffle" "Izakaya Kikufuji" "Heat - Edsa Shangri-La" "Ooma" ...
## $ Country.Code : int 162 162 162 162 162 162 162 162 162 162 ...
## $ City : chr "Makati City" "Makati City" "Mandaluyong City" "Mandaluyong City" ...
## $ Address : chr "Third Floor, Century City Mall, Kalayaan Avenue, Poblacion, Makati City" "Little Tokyo, 2277 Chino Roces Avenue, Legaspi Village, Makati City" "Edsa Shangri-La, 1 Garden Way, Ortigas, Mandaluyong City" "Third Floor, Mega Fashion Hall, SM Megamall, Ortigas, Mandaluyong City" ...
## $ Locality : chr "Century City Mall, Poblacion, Makati City" "Little Tokyo, Legaspi Village, Makati City" "Edsa Shangri-La, Ortigas, Mandaluyong City" "SM Megamall, Ortigas, Mandaluyong City" ...
## $ Locality.Verbose : chr "Century City Mall, Poblacion, Makati City, Makati City" "Little Tokyo, Legaspi Village, Makati City, Makati City" "Edsa Shangri-La, Ortigas, Mandaluyong City, Mandaluyong City" "SM Megamall, Ortigas, Mandaluyong City, Mandaluyong City" ...
## $ Longitude : num 121 121 121 121 121 ...
## $ Latitude : num 14.6 14.6 14.6 14.6 14.6 ...
## $ Cuisines : chr "French, Japanese, Desserts" "Japanese" "Seafood, Asian, Filipino, Indian" "Japanese, Sushi" ...
## $ Average.Cost.for.two: int 1100 1200 4000 1500 1500 1000 2000 2000 6000 1100 ...
## $ Currency : chr "Botswana Pula(P)" "Botswana Pula(P)" "Botswana Pula(P)" "Botswana Pula(P)" ...
## $ Has.Table.booking : chr "Yes" "Yes" "Yes" "No" ...
## $ Has.Online.delivery : chr "No" "No" "No" "No" ...
## $ Is.delivering.now : chr "No" "No" "No" "No" ...
## $ Switch.to.order.menu: chr "No" "No" "No" "No" ...
## $ Price.range : int 3 3 4 4 4 3 4 4 4 3 ...
## $ Aggregate.rating : num 4.8 4.5 4.4 4.9 4.8 4.4 4 4.2 4.9 4.8 ...
## $ Rating.color : chr "Dark Green" "Dark Green" "Green" "Dark Green" ...
## $ Rating.text : chr "Excellent" "Excellent" "Very Good" "Excellent" ...
## $ Votes : int 314 591 270 365 229 336 520 677 621 532 ...
# Check Dimensions
dim(zomato)
## [1] 9551 21
# Sampling data
head(zomato)
# Eliminate unused column
zomato[ , -c(1, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 19, 20)]
zomato_clean <-head(zomato_clean)
# Creating new variable for Country
unique(zomato_clean$Country.Code)
## [1] 162 30 216 14 37 184 214 1 94 148 215 166 189 191 208
$Country[zomato$Country.Code == 162] <- "Philipine"
zomato_clean$Country[zomato$Country.Code == 30] <- "Brazil"
zomato_clean$Country[zomato$Country.Code == 216] <- "USA"
zomato_clean$Country[zomato$Country.Code == 14] <- "Australia"
zomato_clean$Country[zomato$Country.Code == 37] <- "Canada"
zomato_clean$Country[zomato$Country.Code == 184] <- "Singapore"
zomato_clean$Country[zomato$Country.Code == 214] <- "United Arab Emirates"
zomato_clean$Country[zomato$Country.Code == 1] <- "India"
zomato_clean$Country[zomato$Country.Code == 94] <- "Indonesia"
zomato_clean$Country[zomato$Country.Code == 148] <- "New Zealand"
zomato_clean$Country[zomato$Country.Code == 215] <- "England"
zomato_clean$Country[zomato$Country.Code == 166] <- "Qatar"
zomato_clean$Country[zomato$Country.Code == 189] <- "South Africa"
zomato_clean$Country[zomato$Country.Code == 191] <- "Sri Lanka"
zomato_clean$Country[zomato$Country.Code == 208] <- "Turkey" zomato_clean
head(zomato_clean)
# Change Data Type
$Country.Code <- as.factor(zomato_clean$Country.Code)
zomato_clean$Price.range <- as.factor(zomato_clean$Price.range)
zomato_clean$Country <- as.factor(zomato_clean$Country) zomato_clean
# Check Summary
summary(zomato_clean, maxsum = 20)
## Restaurant.Name Country.Code City Average.Cost.for.two
## Length:9551 1 :8652 Length:9551 Min. : 0
## Class :character 14 : 24 Class :character 1st Qu.: 250
## Mode :character 30 : 60 Mode :character Median : 400
## 37 : 4 Mean : 1199
## 94 : 21 3rd Qu.: 700
## 148: 40 Max. :800000
## 162: 22
## 166: 20
## 184: 20
## 189: 60
## 191: 20
## 208: 34
## 214: 60
## 215: 80
## 216: 434
## Currency Price.range Aggregate.rating Votes
## Length:9551 1:4444 Min. :0.000 Min. : 0.0
## Class :character 2:3113 1st Qu.:2.500 1st Qu.: 5.0
## Mode :character 3:1408 Median :3.200 Median : 31.0
## 4: 586 Mean :2.666 Mean : 156.9
## 3rd Qu.:3.700 3rd Qu.: 131.0
## Max. :4.900 Max. :10934.0
##
##
##
##
##
##
##
##
##
## Country
## Australia : 24
## Brazil : 60
## Canada : 4
## England : 80
## India :8652
## Indonesia : 21
## New Zealand : 40
## Philipine : 22
## Qatar : 20
## Singapore : 20
## South Africa : 60
## Sri Lanka : 20
## Turkey : 34
## United Arab Emirates: 60
## USA : 434
For this report, we tried to analyze 9551 restaurants located in 15 countries around the world. Based on the summary, we can find that India has the highest number of restaurants and is followed by the United States and The United Kingdom.
pie(xtabs( ~ Country, zomato_clean))
Based on the pie chart above, we can see clearly that most of the number of restaurants listed on zomato can be found in India with USA following behind.
as.data.frame(sort(prop.table(table((zomato_clean[zomato_clean$Country == "India","City"]))),
India <-decreasing = T))
names(India)[1] <- paste("City")
India
There can be a lot of restaurant in every country, but how do we know whether it’s good or not? The easiest way to find out is by finding reviews and ratings from the customers.
(mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Philipine"]))
philipine.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Brazil"]))
brazil.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "USA"]))
USA.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Australia"]))
australia.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Canada"]))
canada.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Singapore"]))
singapore.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "United Arab Emirates"]))
unitedarabemirates.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "India"]))
india.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Indonesia"]))
indonesia.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "New Zealand"]))
newzealand.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "England"]))
england.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Qatar"]))
qatar.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "South Africa"]))
southafrica.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Sri Lanka"]))
srilanka.mean <- (mean(zomato_clean$Aggregate.rating[zomato_clean$Country == "Turkey"]))
turkey.mean <-
cbind(Country=c("Philipine",
country.mean <-"Brazil",
"USA",
"Australia",
"Canada",
"Singapore",
"United Arab Emirates",
"India",
"Indonesia",
"New Zealand",
"England",
"Qatar",
"South Africa",
"Sri Lanka",
"Turkey"))
cbind(country.mean,as.data.frame(c(philipine.mean,
country.mean1 <-
brazil.mean,
USA.mean,
australia.mean,
canada.mean,
singapore.mean,
unitedarabemirates.mean,
india.mean,
indonesia.mean,
newzealand.mean,
england.mean,
qatar.mean,
southafrica.mean,
srilanka.mean,
turkey.mean)))
names(country.mean1)[2] <- paste("Mean")
data.frame(sort(xtabs(Mean ~ Country, country.mean1), decreasing = T))
country.mean_sort <-
names(country.mean_sort)[2] <- paste("Mean")
country.mean_sort
barplot(xtabs(Mean ~ Country, country.mean_sort), ylim = c(0,5))
Based on data, most of restaurant in Philipine can be categorized as best, because the average of the restaurant rating in Philipine is 4.468182. We can say that you can go wrong when you pick any restaurant in Philipine. On the other hand, you need to do more research when you want to eat at restaurant in India, since the average rating for its’ restaurant is 2.523324.
subset(x = zomato_clean,
indonesia <-== "Indonesia")
Country head(indonesia)
str(indonesia)
## 'data.frame': 21 obs. of 9 variables:
## $ Restaurant.Name : chr "Noah's Barn Coffeenery" "Momo Milk" "Lemongrass" "Talaga Sampireun" ...
## $ Country.Code : Factor w/ 15 levels "1","14","30",..: 5 5 5 5 5 5 5 5 5 5 ...
## $ City : chr "Bandung" "Bogor" "Bogor" "Jakarta" ...
## $ Average.Cost.for.two: int 150000 70000 250000 200000 165000 200000 200000 800000 800000 250000 ...
## $ Currency : chr "Indonesian Rupiah(IDR)" "Indonesian Rupiah(IDR)" "Indonesian Rupiah(IDR)" "Indonesian Rupiah(IDR)" ...
## $ Price.range : Factor w/ 4 levels "1","2","3","4": 3 2 3 3 3 3 3 3 3 3 ...
## $ Aggregate.rating : num 4.2 3.7 4 4.9 4.6 3.9 4.6 4.1 4.6 4.2 ...
## $ Votes : int 22 783 1159 1662 1476 137 903 1498 873 259 ...
## $ Country : Factor w/ 15 levels "Australia","Brazil",..: 6 6 6 6 6 6 6 6 6 6 ...
$City <- as.factor(indonesia$City) indonesia
summary(indonesia)
## Restaurant.Name Country.Code City Average.Cost.for.two
## Length:21 94 :21 Bandung : 1 Min. : 70000
## Class :character 1 : 0 Bogor : 2 1st Qu.:165000
## Mode :character 14 : 0 Jakarta :16 Median :200000
## 30 : 0 Tangerang: 2 Mean :281191
## 37 : 0 3rd Qu.:300000
## 148 : 0 Max. :800000
## (Other): 0
## Currency Price.range Aggregate.rating Votes
## Length:21 1: 0 Min. :3.400 Min. : 22.0
## Class :character 2: 1 1st Qu.:4.000 1st Qu.: 259.0
## Mode :character 3:20 Median :4.300 Median : 605.0
## 4: 0 Mean :4.295 Mean : 772.1
## 3rd Qu.:4.600 3rd Qu.:1159.0
## Max. :4.900 Max. :2212.0
##
## Country
## Indonesia:21
## Australia: 0
## Brazil : 0
## Canada : 0
## England : 0
## India : 0
## (Other) : 0
nrow(indonesia)
## [1] 21
At least, there are 21 restaurant which you can find in Zomato Indonesia, which most of them located in Jakarta. We can say that most of the restaurant in Indonesia are delicious, since the average star rating for restaurant in Indonesia is 4.295.
as.data.frame(sort(table(droplevels(indonesia$City)), decreasing = T))
city.indonesia <-
city.indonesia
From the data, we can see that Jakarta is city with the most amount of restaurant in Zomato.
Zomato is an Indian restaurant aggregator and food delivery start-up founded by Deepinder Goyal and Pankaj Chaddah in 2008. India has the highest number of restaurants and is followed by the United States and The United Kingdom. The city with most amount of restaurant in India is New Delhi. Most of restaurant in Philipine can be categorized as best, because the average of the restaurant rating in Philipine is 4.468182. We need to do more research when we want to eat at restaurant in India, since the average rating for its’ restaurant is 2.523324. However, don’t forget about Indonesia, with average of 4.295 star rating, Indonesia ranks third out of all countries on Zomato worldwide.