π Extracting Business Insights from Zomatoβs Restaurant Data using Python
An interactive Streamlit web application for analyzing Zomato restaurant data and recommending similar restaurants using TF-IDF and Cosine Similarity. The dashboard includes EDA (Exploratory Data Analysis) visualizations, interactive maps, and restaurant recommendations with a modern, theme-adaptive UI.
π΄ Zomato Data Analysis Dashboard & Recommendation System β π Open Live Demo
The goal of this project is to explore and analyze the Zomato restaurant dataset to uncover meaningful trends and patterns that can help businesses make data-driven decisions.
Specifically:
- π§ Understand data structure & quality
- π Identify cuisine and restaurant trends
- π Examine ratings & delivery preferences across locations
- πΈ Analyze cost patterns in different cities
- Select any restaurant and get top similar restaurants based on cuisine, cost, and rating.
- Uses TF-IDF vectorization and cosine similarity to find restaurant similarities.
- Customizable number of recommendations (1β10).
- Explore KPIs such as total restaurants, average rating, and average cost.
- Visualize Top Cuisines, Rating Distributions, and Price vs Rating.
- Generate Cuisine WordClouds for quick insights.
- Interactive Plotly Mapbox map showing restaurant locations.
- Filter by rating range dynamically.
- Highlights Top 3 restaurants with gold stars.
- Displays Top 10 restaurants based on ratings.
- Includes thumbnails, cuisines, and average costs.
| Component | Technology |
|---|---|
| Language | Python |
| Data Handling | Pandas, NumPy |
| Visualization | Matplotlib, Seaborn, WordCloud, Plotly Express |
| Machine Learning | Scikit-learn (TF-IDF, Cosine Similarity) |
| Frontend/UI | Streamlit |
| Dataset | Zomato Dataset (zomato.csv) |
| Column | Description |
|---|---|
Restaurant Name |
Name of the restaurant |
Location |
City / Area |
Cuisines |
Cuisine types served |
Average Cost for two |
Cost for two people |
Has Online delivery |
Yes / No |
Aggregate rating |
Average customer rating |
Votes |
Number of user ratings |
π Dataset Source: Kaggle - Zomato Dataset
- Combine cuisines, average cost, and ratings into a single text field.
- Convert text into numerical vectors using TF-IDF.
- Compute cosine similarity between restaurants.
- Recommend the most similar restaurants excluding the selected one.
The app supports both Light Mode and Dark Mode for enhanced viewing.
You can switch between them using the sidebar option π.
| Section | Description |
|---|---|
| Recommendation System | Find similar restaurants. |
| EDA Dashboards | View data insights and plots. |
| Map Visualization | Explore restaurant locations. |
| Top Restaurants | See the best-rated restaurants. |
π Top 10 Cuisines Bar Chart
β Rating Distribution (highlighted Top 3)
βοΈ Cuisine WordCloud
πΊοΈ Interactive Map with Rating Filter
π Top Restaurants Leaderboard
Here are some key screenshots of the Zomato Data Analysis Dashboard:
- ποΈ Delhi NCR has the maximum number of restaurants.
- π North Indian is the most common cuisine.
- β Ratings tend to be higher for fine dining than for cafΓ©s.
- π΅ Online delivery is more popular in metropolitan areas.
- π° Average cost for two varies significantly between cities.
- π Identify high-performing restaurants for recommendations.
flowchart LR
%% --- Data Loading & Cleaning Stage ---
subgraph DC[π Data Loading & Cleaning]
A["π¦ Import Libraries "]
B["π Load Zomato Dataset "]
C["βοΈ Clean & Preprocess Data"]
end
%% --- Filtering & EDA Stage ---
subgraph FE[π Filtering & EDA]
D["π Apply Filters"]
E["π EDA Visualization"]
end
%% --- Recommendation System Stage ---
subgraph RS[π€ Recommendation System]
F["Build TF-IDF Matrix"]
G["Cosine Similarity"]
H["Top Recommendations"]
end
%% --- Map & Leaderboard Stage ---
subgraph ML[πΊοΈ Map & Leaderboard]
I["πΊοΈ Interactive Map"]
J["π Top Restaurants Leaderboard"]
end
%% --- Deployment Stage ---
subgraph DEP[π Deployment]
K["π Streamlit Deployment\n(Interactive Web Dashboard)"]
end
%% --- Flow Connections ---
A --> B --> C --> D --> E --> F --> G --> H --> I --> J --> K
%% --- Styles ---
style A fill:#FFD54F,stroke:#F57F17,stroke-width:2px,color:#000
style B fill:#4FC3F7,stroke:#0277BD,stroke-width:2px,color:#fff
style C fill:#AED581,stroke:#33691E,stroke-width:2px,color:#000
style D fill:#BA68C8,stroke:#4A148C,stroke-width:2px,color:#fff
style E fill:#FF8A65,stroke:#BF360C,stroke-width:2px,color:#fff
style F fill:#90CAF9,stroke:#0D47A1,stroke-width:2px,color:#000
style G fill:#F48FB1,stroke:#880E4F,stroke-width:2px,color:#fff
style H fill:#A1887F,stroke:#4E342E,stroke-width:2px,color:#fff
style I fill:#81C784,stroke:#2E7D32,stroke-width:2px,color:#000
style J fill:#FFB74D,stroke:#E65100,stroke-width:2px,color:#000
style K fill:#F44336,stroke:#B71C1C,stroke-width:2px,color:#fff
- β Add sentiment analysis on customer reviews.
- β Include filter for cuisine-specific recommendations.
- β Integrate real-time Zomato API for live data.
Lomada Siva Gangi Reddy
π B.Tech CSE (Data Science), RGMCET (2021β2025)
π― Aspiring Data Analyst | Skilled in Python, SQL, Power BI, and Data Science
π Open to Internships & Job Offers
π¬ Contact Me
- π 9346493592
- πΌ LinkedIn π GitHub




