VOOZH about

URL: https://www.geeksforgeeks.org/data-analysis/zomato-data-analysis-using-python/

⇱ Zomato Data Analysis Using Python - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Zomato Data Analysis Using Python

Last Updated : 28 Jul, 2025

Understanding customer preferences and restaurant trends is important for making informed business decisions in food industry. In this article, we will analyze Zomato’s restaurant dataset using Python to find meaningful insights. We aim to answer questions such as:

  • Do more restaurants provide online delivery compared to offline services?
  • Which types of restaurants are most favored by the general public?
  • What price range do couples prefer for dining out?

Implementation for Zomato Data Analysis using Python.

Below steps are followed for its implementation.

Step 1: Importing necessary Python libraries.

We will be using Pandas, Numpy, Matplotlib and Seaborn libraries.

Step 2: Creating the data frame.

You can download the dataset from here.

Output:

πŸ‘ zomato1
Dataset

Step 3: Data Cleaning and Preparation

Before moving further we need to clean and process the data.

1. Convert the rate column to a float by removing denominator characters.

  • dataframe['rate']=dataframe['rate'].apply(handleRate): Applies the handleRate function to clean and convert each rating value in the 'rate' column.

Output:

πŸ‘ zomato2
Converting rate column to float

2. Getting summary of the dataframe use df.info().

Output:

πŸ‘ zomato3
Summary of dataset

3. Checking for missing or null values to identify any data gaps.

Output:

πŸ‘ Screenshot-2025-07-28-160036
null values

There is no NULL value in dataframe.

Step 4: Exploring Restaurant Types

1. Let's see the listed_in (type) column to identify popular restaurant categories.

Output:

πŸ‘ Types of Restaurant Count-Geeksforgeeks

Conclusion: The majority of the restaurants fall into the dining category.

2. Votes by Restaurant Type

Here we get the count of votes for each category.

Output:

πŸ‘ Screenshot-2025-07-28-160738

Conclusion: Dining restaurants are preferred by a larger number of individuals.

Step 5: Identify the Most Voted Restaurant

Find the restaurant with the highest number of votes.

Output:

πŸ‘ z2
Highest number of votes

Step 6: Online Order Availability

Exploring the online_order column to see how many restaurants accept online orders.

Output:

πŸ‘ Online vs Offline Order-Geeksforgeeks

Conclusion: This suggests that a majority of the restaurants do not accept online orders.

Step 7: Analyze Ratings

Checking the distribution of ratings from the rate column.

Output:

πŸ‘ Rating DIstribution-Geeksforgeeks

Conclusion: The majority of restaurants received ratings ranging from 3.5 to 4.

Step 8: Approximate Cost for Couples

Analyze the approx_cost(for two people) column to find the preferred price range.

Output:

πŸ‘ approx_cost(for two people)-Geeksforgeeks

Conclusion: The majority of couples prefer restaurants with an approximate cost of 300 rupees.

Step 9: Ratings Comparison - Online vs Offline Orders

Compare ratings between restaurants that accept online orders and those that don't.

Output:

πŸ‘ Box Plot-Geeksforgeeks

Conclusion: Offline orders received lower ratings in comparison to online orders which obtained excellent ratings.

Step 10: Order Mode Preferences by Restaurant Type

Find the relationship between order mode (online_order) and restaurant type (listed_in(type)).

  • pivot_table = dataframe.pivot_table(index='listed_in(type)', columns='online_order', aggfunc='size', fill_value=0): Creates a pivot table counting restaurants by type and online order availability.

Output:

πŸ‘ Heatmap-Geeksforgeeks

With this we can say that dining restaurants primarily accept offline orders whereas cafes primarily receive online orders. This suggests that clients prefer to place orders in person at restaurants but prefer online ordering at cafes.

You can download the source code from here: Zomato Data Analysis

Comment