├── requirements.txt
├── data
├── Screenshot 2025-06-28 141132.png
├── Screenshot 2025-06-28 141154.png
└── Zomato-data-.csv
├── LICENSE
├── app.py
├── README.md
├── stream.py
├── zomato_cleaned.csv
└── notebooks
└── Clustering.ipynb
/requirements.txt:
--------------------------------------------------------------------------------
1 | streamlit
2 | pandas
3 | seaborn
4 | matplotlib
5 | scikit-learn
6 | plotly
7 | altair
8 | st-aggrid
9 |
--------------------------------------------------------------------------------
/data/Screenshot 2025-06-28 141132.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Madhuarvind/zomato-data-analysis/HEAD/data/Screenshot 2025-06-28 141132.png
--------------------------------------------------------------------------------
/data/Screenshot 2025-06-28 141154.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Madhuarvind/zomato-data-analysis/HEAD/data/Screenshot 2025-06-28 141154.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Madhuaravind P
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/app.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 |
3 | # Load data
4 | file_path = 'E:\zomoto-Data-Analysis\data\Zomato-data-.csv' # adjust if needed
5 | df = pd.read_csv(file_path)
6 |
7 | # Preview data
8 | print("Shape of dataset:", df.shape)
9 | print("Columns:")
10 | print(df.columns.tolist())
11 | df.head()
12 |
13 | # Data types
14 | print(df.info())
15 |
16 | # Check missing values
17 | print(df.isnull().sum())
18 |
19 | def clean_rate(x):
20 | if isinstance(x, str):
21 | x = x.strip()
22 | if x in ['NEW', '-', '']:
23 | return None
24 | else:
25 | return float(x.split('/')[0])
26 | return None
27 |
28 | df['rate_cleaned'] = df['rate'].apply(clean_rate)
29 |
30 | # Check cleaned values
31 | print(df[['rate', 'rate_cleaned']].head())
32 |
33 | # Summary of cleaned ratings
34 | print(df['rate_cleaned'].describe())
35 |
36 |
37 | import random
38 |
39 | def generate_review(rating):
40 | if rating >= 4.0:
41 | return random.choice(['Amazing food!', 'Loved it!', 'Fantastic service.'])
42 | elif rating >= 3.0:
43 | return random.choice(['It was okay.', 'Decent experience.', 'Could be better.'])
44 | else:
45 | return random.choice(['Not good.', 'Bad service.', 'Won’t come back.'])
46 |
47 | df['review_text'] = df['rate_cleaned'].apply(generate_review)
48 |
49 |
50 | df.to_csv('zomato_cleaned.csv', index=False)
51 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 🍽️ Zomato Data Analysis Dashboard
2 |
3 | An interactive **Streamlit web app** that analyzes Zomato restaurant data to provide insights into pricing, ratings, services, and customer patterns.
4 | The app uses clustering, association rules, sentiment analysis (optional), and advanced visualizations.
5 |
6 | ---
7 |
8 |
9 | ## 📸 Screenshots
10 |
11 | ### 🔍 Dashboard Overview
12 | 
13 |
14 | ### 📊 Visualizations and Clusters
15 | 
16 |
17 | ---
18 | ## 🚀 Features
19 |
20 | ✅ **Filters:**
21 | - Restaurant type (Delivery / Dine-in)
22 | - Clusters (KMeans groups)
23 | - Price range slider
24 |
25 | ✅ **Visualizations:**
26 | - Bar chart: Top 10 most common restaurant names
27 | - Pie chart: Delivery vs Dine-in share
28 | - Heatmap: Average rating by price band and type
29 | - Bubble chart: Cost vs rating with vote size
30 | - Box plot: Price distribution by type
31 | - Correlation heatmap (rating, cost, votes, sentiment if available)
32 | - Sentiment histogram (optional — if sentiment data exists)
33 | - Scatter plot: Cost vs rating colored by cluster
34 |
35 | ✅ **Advanced Analytics:**
36 | - Clustering using KMeans
37 | - Association rules between services
38 | - Optional sentiment scoring on synthetic review text
39 |
40 | ✅ **Built with:**
41 | - **Streamlit**
42 | - **Pandas**
43 | - **Seaborn / Matplotlib**
44 | - **scikit-learn**
45 |
46 | ---
47 |
48 | ## ⚙️ How to Run
49 |
50 | ### 1️⃣ Install dependencies
51 | ```bash
52 | pip install streamlit pandas seaborn matplotlib scikit-learn
53 | ```
54 |
55 | ### 2️⃣ Launch the app
56 | ```bash
57 | streamlit run app.py
58 | ```
59 |
60 | ### 3️⃣ Interact with filters and visuals in your browser
61 |
62 | ---
63 |
64 | ## 🌟 Example Insights
65 |
66 | 💡 Restaurants offering both online ordering and table booking tend to have higher ratings.
67 | 💡 Mid-range price bands (~₹300–₹600 for two) are associated with better customer ratings.
68 | 💡 Delivery dominates restaurant types — but adding table booking may enhance perception.
69 |
70 | ---
71 |
72 | ## 📊 Possible Extensions
73 |
74 | ✅ Add map-based visualizations if geo-coordinates are available
75 | ✅ Deploy to Streamlit Cloud or other hosting platforms
76 | ✅ Integrate real review text for NLP sentiment analysis
77 |
78 | ---
79 |
80 | ## 📌 Notes
81 |
82 | - This app uses **synthetic sentiment data** if no real review text exists.
83 | - The dashboard design is **modular and easily extendable**.
84 |
85 | ---
86 |
87 | ## ✨ Author
88 |
89 | **Zomato Data Analysis Dashboard** built for portfolio and learning purposes.
90 | 👉 Feel free to **fork**, **extend**, or **deploy**!
91 |
92 | ---
93 |
--------------------------------------------------------------------------------
/data/Zomato-data-.csv:
--------------------------------------------------------------------------------
1 | name,online_order,book_table,rate,votes,approx_cost(for two people),listed_in(type)
2 | Jalsa,Yes,Yes,4.1/5,775,800,Buffet
3 | Spice Elephant,Yes,No,4.1/5,787,800,Buffet
4 | San Churro Cafe,Yes,No,3.8/5,918,800,Buffet
5 | Addhuri Udupi Bhojana,No,No,3.7/5,88,300,Buffet
6 | Grand Village,No,No,3.8/5,166,600,Buffet
7 | Timepass Dinner,Yes,No,3.8/5,286,600,Buffet
8 | Rosewood International Hotel - Bar & Restaurant,No,No,3.6/5,8,800,Buffet
9 | Onesta,Yes,Yes,4.6/5,2556,600,Cafes
10 | Penthouse Cafe,Yes,No,4.0/5,324,700,other
11 | Smacznego,Yes,No,4.2/5,504,550,Cafes
12 | Village Café,Yes,No,4.1/5,402,500,Cafes
13 | Cafe Shuffle,Yes,Yes,4.2/5,150,600,Cafes
14 | The Coffee Shack,Yes,Yes,4.2/5,164,500,Cafes
15 | Caf-Eleven,No,No,4.0/5,424,450,Cafes
16 | San Churro Cafe,Yes,No,3.8/5,918,800,Cafes
17 | Cafe Vivacity,Yes,No,3.8/5,90,650,Cafes
18 | Catch-up-ino,Yes,No,3.9/5,133,800,Cafes
19 | Kirthi's Biryani,Yes,No,3.8/5,144,700,Cafes
20 | T3H Cafe,No,No,3.9/5,93,300,Cafes
21 | 360 Atoms Restaurant And Cafe,Yes,No,3.1/5,13,400,Cafes
22 | The Vintage Cafe,Yes,No,3.0/5,62,400,Cafes
23 | Woodee Pizza,Yes,No,3.7/5,180,500,Cafes
24 | Cafe Coffee Day,No,No,3.6/5,28,900,Cafes
25 | My Tea House,Yes,No,3.6/5,62,600,Cafes
26 | Hide Out Cafe,No,No,3.7/5,31,300,Cafes
27 | CAFE NOVA,No,No,3.2/5,11,600,Cafes
28 | Coffee Tindi,Yes,No,3.8/5,75,200,Cafes
29 | Sea Green Cafe,No,No,3.3/5,4,500,Cafes
30 | Cuppa,No,No,3.3/5,23,550,Cafes
31 | Srinathji's Cafe,No,No,3.8/5,148,550,Cafes
32 | Redberrys,Yes,No,4.0/5,219,600,Cafes
33 | Foodiction,Yes,No,2.8/5,506,500,other
34 | Sweet Truth,Yes,No,3.9/5,35,500,Dining
35 | Ovenstory Pizza,Yes,No,3.9/5,172,750,Dining
36 | Faasos,Yes,No,4.2/5,415,500,other
37 | Behrouz Biryani,Yes,No,3.9/5,230,650,Dining
38 | Fast And Fresh,Yes,No,2.8/5,91,400,Dining
39 | Szechuan Dragon,Yes,No,4.2/5,1647,600,Dining
40 | Empire Restaurant,Yes,No,4.4/5,4884,750,other
41 | Maruthi Davangere Benne Dosa,Yes,No,4.0/5,17,150,Dining
42 | Chaatimes,Yes,No,3.8/5,133,200,Dining
43 | Havyaka Mess,No,No,3.9/5,28,300,Dining
44 | McDonald's,Yes,No,3.9/5,286,500,Dining
45 | Domino's Pizza,Yes,No,3.9/5,540,800,Dining
46 | Onesta,Yes,Yes,4.6/5,2556,600,other
47 | Hotboxit,No,No,3.8/5,36,400,Dining
48 | Kitchen Garden,Yes,No,3.6/5,244,300,Dining
49 | Recipe,Yes,No,4.0/5,804,450,Dining
50 | Beijing Bites,Yes,No,3.7/5,679,850,Dining
51 | Tasty Bytes,Yes,No,3.1/5,245,300,Dining
52 | Petoo,No,No,3.7/5,21,450,Dining
53 | Shree Cool Point,Yes,No,4.1/5,28,150,Dining
54 | Corner House Ice Cream,No,No,4.3/5,345,400,Dining
55 | Biryanis And More,Yes,No,4.0/5,618,750,Dining
56 | Roving Feast,No,No,4.0/5,1047,450,Dining
57 | FreshMenu,Yes,No,3.9/5,627,450,Dining
58 | Banashankari Donne Biriyani,Yes,No,3.8/5,104,300,Dining
59 | Wamama,Yes,Yes,4.2/5,354,800,other
60 | Five Star Chicken,No,No,3.6/5,55,200,Dining
61 | XO Belgian Waffle,Yes,No,3.7/5,17,400,Dining
62 | Peppy Peppers,No,No,4.2/5,244,800,other
63 | Goa 0 Km,Yes,Yes,3.6/5,163,800,Dining
64 | Chinese Kitchen,Yes,No,3.8/5,58,150,Dining
65 | Jeet Restaurant,No,Yes,4.0/5,808,850,Dining
66 | Cake of the Day,No,No,3.7/5,78,150,Dining
67 | Kabab Magic,Yes,No,4.1/5,1720,400,Dining
68 | Namma Brahmin's Idli,Yes,No,3.6/5,34,100,Dining
69 | Gustoes Beer House,No,No,4.1/5,868,700,Dining
70 | Sugar Rush,No,No,3.8/5,39,300,Dining
71 | Burger King,Yes,No,3.2/5,71,600,Dining
72 | The Good Bowl,Yes,No,3.6/5,6,500,Dining
73 | The Biryani Cafe,No,No,4.1/5,520,300,Dining
74 | Spicy Tandoor,No,No,4.1/5,0,150,Dining
75 | LSD Cafe,No,No,2.9/5,84,700,other
76 | Rolls On Wheels,No,No,3.6/5,299,300,Dining
77 | Om Sri Vinayaka Chats,No,No,3.6/5,0,500,Dining
78 | Sri Guru Kottureshwara Davangere Benne Dosa,Yes,No,4.1/5,558,150,Dining
79 | Devanna Dum Biriyani Centre,Yes,No,3.6/5,28,300,Dining
80 | Kolbeh,No,No,3.7/5,22,500,Dining
81 | Upahar Sagar,No,No,3.8/5,39,350,Dining
82 | Kadalu Sea Food Restaurant,Yes,No,3.8/5,153,500,Dining
83 | Frozen Bottle,Yes,No,4.2/5,146,400,Dining
84 | Parimala Sweets,No,No,3.5/5,14,200,Dining
85 | Vaishali Deluxe,No,No,3.8/5,42,700,Dining
86 | Chill Out,No,No,3.8/5,0,100,Dining
87 | The Big O Bakes,No,No,4.0/5,66,300,Dining
88 | Meghana Foods,Yes,No,4.4/5,4401,600,Dining
89 | Krishna Sagar,No,No,3.5/5,31,200,Dining
90 | Dessert Rose,No,No,3.5/5,7,500,Dining
91 | Chickpet Donne Biryani House,No,No,3.7/5,21,250,Dining
92 | Me And My Cake,No,No,3.7/5,0,500,Dining
93 | Sunsadm,No,No,3.7/5,0,400,Dining
94 | Annapooraneshwari Mess,No,No,3.7/5,0,200,Dining
95 | Thanco's Natural Ice Creams,No,No,3.2/5,9,300,Dining
96 | Nandhini Deluxe,No,No,2.6/5,283,600,Dining
97 | Vi Ra's Bar and Restaurant,No,No,3.3/5,62,800,Dining
98 | Kaggis,No,No,3.8/5,64,250,Dining
99 | Ayda Persian Kitchen,No,No,3.7/5,39,950,Dining
100 | Chatar Patar,No,No,3.7/5,65,300,Dining
101 | Polar Bear,Yes,No,3.8/5,71,400,Dining
102 | Kidambi's Kitchen,No,No,3.5/5,52,300,Dining
103 | Mane Thindi,No,No,3.7/5,130,200,Dining
104 | Kotian Karavali Restaurant,No,No,3.5/5,10,300,Dining
105 | Floured-Baked With Love,No,No,3.8 /5,45,400,Dining
106 | CAFE NOVA,No,No,3.2/5,11,600,Dining
107 | Cakes & Slices,No,No,3.5/5,13,300,Dining
108 | Spice 9,No,No,3.4/5,8,300,Dining
109 | Coffee Shopee,No,No,3.4/5,0,250,Dining
110 | Naveen Kabab & Biriyani Mane,No,No,3.2/5,9,300,Dining
111 | Katriguppe Donne Biryani,No,No,3.2/5,4,300,Dining
112 | Hari Super Sandwich,No,No,3.2/5,0,200,Dining
113 | Atithi Point Ande Ka Funda,No,No,3.1/5,29,150,Dining
114 | Just Bake,No,No,3.4/5,8,400,Dining
115 | Dharwad Line Bazaar Mishra Pedha,No,No,3.4/5,0,150,Dining
116 | Cake Bite,No,No,3.4/5,0,300,Dining
117 | Aarush's Food Plaza,No,No,3.4/5,0,200,Dining
118 | Wood Stove,No,No,3.4/5,0,150,Dining
119 | Kulfi & More,No,No,3.4/5,0,150,Dining
120 | Kannadigas Karavali,No,No,3.4/5,0,250,Dining
121 | K27 - The Pub,No,No,3.1/5,30,900,Dining
122 | Bengaluru Coffee House,Yes,No,4.1/5,201,300,Dining
123 | New Mangalore Lunch Home,No,No,3.3/5,7,200,Dining
124 | Coffee Bytes,No,No,3.1/5,6,100,Dining
125 | Parjanya Chat Zone,No,No,3.3/5,17,200,Dining
126 | Kwality Wall's Swirl's Happiness Station,No,No,2.9/5,25,200,Dining
127 | Soms Kitchen & Bakes,No,No,2.9/5,0,400,Dining
128 | Banashankari Nati Style,No,No,2.9/5,0,350,Dining
129 | Ruchi Maayaka,No,No,3.3/5,8,100,Dining
130 | Mohitesh Hut Roll,No,No,3.3/5,0,150,Dining
131 | Sri Basaveshwar Jolada Rotti Oota,No,No,3.4/5,0,150,Dining
132 | Roll Magic Fast Food,No,No,3.4/5,0,200,Dining
133 | Foodlieious Multi Cuisine,No,No,3.4/5,0,100,Dining
134 | Thanishka Nati And Karavali Style,No,No,3.1/5,0,400,Dining
135 | Swathi Cool Point,No,No,4.1/5,0,200,Dining
136 | Kaumudis Juoice,No,No,3.3/5,0,150,Dining
137 | Amma - Manae,No,No,3.1/5,0,400,Dining
138 | Sri Sai Tiffannies,No,No,3.3/5,0,150,Dining
139 | Hotel Andhra Speices,No,No,2.9/5,0,250,Dining
140 | Sri Murari Family Restaurant,No,No,2.9/5,0,250,Dining
141 | Aramane Donne Biriyani,No,No,2.9/5,0,150,Dining
142 | Darkolates,No,No,3.3/5,0,200,Dining
143 | Swaada Healthy Kitchen,No,No,3.3/5,0,350,Dining
144 | Gawdaru Mane Beriyani,No,No,3.3/5,0,300,Dining
145 | Melting Melodies,No,No,3.3/5,0,100,Dining
146 | New Indraprasta,No,No,3.3/5,0,150,Dining
147 | Anna Kuteera,Yes,No,4.0/5,771,450,Dining
148 | Darbar,No,No,3.0/5,98,800,Dining
149 | Vijayalakshmi,Yes,No,3.9/5,47,200,Dining
150 |
--------------------------------------------------------------------------------
/stream.py:
--------------------------------------------------------------------------------
1 | import streamlit as st
2 | import pandas as pd
3 | import seaborn as sns
4 | import matplotlib.pyplot as plt
5 | import plotly.express as px
6 | import altair as alt
7 | from sklearn.preprocessing import StandardScaler
8 | from sklearn.cluster import KMeans
9 | from st_aggrid import AgGrid, GridOptionsBuilder
10 |
11 | # --- Streamlit Page Config ---
12 | st.set_page_config(page_title="🍽️ Zomato Analytics Dashboard", layout="wide")
13 |
14 | # --- Improved Modern Styling ---
15 | st.markdown("""
16 |
55 | """, unsafe_allow_html=True)
56 |
57 | # --- Load and preprocess data ---
58 | @st.cache_data
59 | def load_data():
60 | df = pd.read_csv('zomato_cleaned.csv')
61 | df['rate_cleaned'] = df['rate'].replace(['NEW', '-'], None)
62 | df['rate_cleaned'] = df['rate_cleaned'].astype(str).str.extract(r'(\d+\.\d+)').astype(float)
63 | df['approx_cost(for two people)'] = df['approx_cost(for two people)'].astype(str).str.replace(',', '', regex=False)
64 | df['approx_cost(for two people)'] = df['approx_cost(for two people)'].astype(float)
65 | df = df.dropna(subset=['rate_cleaned', 'approx_cost(for two people)', 'votes'])
66 | X = df[['rate_cleaned', 'approx_cost(for two people)', 'votes']]
67 | scaler = StandardScaler()
68 | X_scaled = scaler.fit_transform(X)
69 | kmeans = KMeans(n_clusters=3, random_state=42)
70 | df['cluster'] = kmeans.fit_predict(X_scaled)
71 | return df
72 |
73 | df = load_data()
74 |
75 | # --- Sidebar Filters ---
76 | st.sidebar.title("🔍 Filter Restaurants")
77 | type_filter = st.sidebar.multiselect("Restaurant Type", options=df['listed_in(type)'].unique(), default=df['listed_in(type)'].unique())
78 | cluster_filter = st.sidebar.multiselect("Clusters", options=sorted(df['cluster'].unique()), default=sorted(df['cluster'].unique()))
79 | price_min, price_max = int(df['approx_cost(for two people)'].min()), int(df['approx_cost(for two people)'].max())
80 | price_range = st.sidebar.slider("Price Range (for two)", price_min, price_max, (price_min, price_max))
81 |
82 | # --- Apply Filters ---
83 | filtered_df = df[
84 | (df['listed_in(type)'].isin(type_filter)) &
85 | (df['cluster'].isin(cluster_filter)) &
86 | (df['approx_cost(for two people)'] >= price_range[0]) &
87 | (df['approx_cost(for two people)'] <= price_range[1])
88 | ]
89 |
90 | # --- Title ---
91 | st.title("🍽️ Zomato Restaurant Analytics Dashboard")
92 |
93 | # --- KPI Metrics as Cards ---
94 | col1, col2, col3 = st.columns(3)
95 | with col1:
96 | st.markdown("
".format(round(filtered_df['rate_cleaned'].mean(), 2)), unsafe_allow_html=True)
97 | with col2:
98 | st.markdown("".format(int(filtered_df['approx_cost(for two people)'].mean())), unsafe_allow_html=True)
99 | with col3:
100 | st.markdown("".format(int(filtered_df['votes'].sum())), unsafe_allow_html=True)
101 |
102 | st.markdown("---")
103 |
104 | # --- Top Restaurants ---
105 | st.markdown("## 📊 Top 10 Most Common Restaurants")
106 | top_restaurants = filtered_df['name'].value_counts().head(10)
107 | fig1, ax1 = plt.subplots()
108 | top_restaurants.plot(kind='bar', color='tomato', ax=ax1)
109 | plt.xticks(rotation=45)
110 | st.pyplot(fig1)
111 |
112 | # --- Delivery vs Dine-in Pie Chart ---
113 | st.markdown("## 🥡 Delivery vs Dine-in Distribution")
114 | fig2, ax2 = plt.subplots()
115 | filtered_df['listed_in(type)'].value_counts().plot(kind='pie', autopct='%1.1f%%', ax=ax2)
116 | ax2.set_ylabel('')
117 | st.pyplot(fig2)
118 |
119 | # --- Heatmap ---
120 | st.markdown("## 🔥 Heatmap: Rating by Price Band and Type")
121 | filtered_df['price_band'] = pd.cut(filtered_df['approx_cost(for two people)'], bins=5)
122 | pivot = filtered_df.pivot_table(index='price_band', columns='listed_in(type)', values='rate_cleaned', aggfunc='mean')
123 | fig3, ax3 = plt.subplots()
124 | sns.heatmap(pivot, annot=True, cmap='YlGnBu', fmt='.2f', ax=ax3)
125 | st.pyplot(fig3)
126 |
127 | # --- Bubble Chart ---
128 | st.markdown("## 🧼 Bubble Chart: Cost vs Rating")
129 | fig4 = px.scatter(
130 | filtered_df,
131 | x='approx_cost(for two people)',
132 | y='rate_cleaned',
133 | size='votes',
134 | color='cluster',
135 | hover_name='name',
136 | hover_data=['listed_in(type)', 'votes'],
137 | template="plotly_white"
138 | )
139 | st.plotly_chart(fig4, use_container_width=True)
140 |
141 | # --- Box Plot ---
142 | st.markdown("## 📦 Price Distribution by Type")
143 | fig5, ax5 = plt.subplots(figsize=(10, 6))
144 | sns.boxplot(data=filtered_df, x='listed_in(type)', y='approx_cost(for two people)', palette='pastel', ax=ax5)
145 | plt.xticks(rotation=45)
146 | st.pyplot(fig5)
147 |
148 | # --- Cluster Scatter Plot ---
149 | st.markdown("## 🧠 Clustered Cost vs Rating")
150 | fig6 = px.scatter(
151 | filtered_df,
152 | x='approx_cost(for two people)',
153 | y='rate_cleaned',
154 | color='cluster',
155 | hover_name='name',
156 | template="plotly_dark"
157 | )
158 | st.plotly_chart(fig6, use_container_width=True)
159 |
160 | # --- Altair Chart ---
161 | st.markdown("## 📉 Avg Rating by Type (Altair)")
162 | bar_chart = alt.Chart(filtered_df).mark_bar().encode(
163 | x=alt.X('listed_in(type):N', sort='-y'),
164 | y='average(rate_cleaned):Q',
165 | color='cluster:N',
166 | tooltip=['listed_in(type)', 'average(rate_cleaned)']
167 | ).properties(width=700).interactive()
168 | st.altair_chart(bar_chart, use_container_width=True)
169 |
170 | # --- Interactive Table ---
171 | st.markdown("## 📋 Restaurant Table")
172 | gb = GridOptionsBuilder.from_dataframe(filtered_df[['name', 'rate_cleaned', 'votes', 'approx_cost(for two people)', 'listed_in(type)', 'cluster']])
173 | gb.configure_pagination()
174 | gb.configure_side_bar()
175 | gb.configure_default_column(filterable=True, sortable=True, resizable=True)
176 | grid_options = gb.build()
177 | AgGrid(filtered_df, gridOptions=grid_options, height=350, fit_columns_on_grid_load=True)
178 |
179 | # --- Footer ---
180 | st.markdown("""
181 |
182 |
183 | Made with ❤️ using Streamlit | Built by Madhuaravind
184 |
185 | """, unsafe_allow_html=True)
186 |
--------------------------------------------------------------------------------
/zomato_cleaned.csv:
--------------------------------------------------------------------------------
1 | name,online_order,book_table,rate,votes,approx_cost(for two people),listed_in(type),rate_cleaned,review_text
2 | Jalsa,Yes,Yes,4.1/5,775,800,Buffet,4.1,Amazing food!
3 | Spice Elephant,Yes,No,4.1/5,787,800,Buffet,4.1,Amazing food!
4 | San Churro Cafe,Yes,No,3.8/5,918,800,Buffet,3.8,Decent experience.
5 | Addhuri Udupi Bhojana,No,No,3.7/5,88,300,Buffet,3.7,It was okay.
6 | Grand Village,No,No,3.8/5,166,600,Buffet,3.8,Could be better.
7 | Timepass Dinner,Yes,No,3.8/5,286,600,Buffet,3.8,Could be better.
8 | Rosewood International Hotel - Bar & Restaurant,No,No,3.6/5,8,800,Buffet,3.6,Could be better.
9 | Onesta,Yes,Yes,4.6/5,2556,600,Cafes,4.6,Loved it!
10 | Penthouse Cafe,Yes,No,4.0/5,324,700,other,4.0,Amazing food!
11 | Smacznego,Yes,No,4.2/5,504,550,Cafes,4.2,Amazing food!
12 | Village Café,Yes,No,4.1/5,402,500,Cafes,4.1,Amazing food!
13 | Cafe Shuffle,Yes,Yes,4.2/5,150,600,Cafes,4.2,Loved it!
14 | The Coffee Shack,Yes,Yes,4.2/5,164,500,Cafes,4.2,Fantastic service.
15 | Caf-Eleven,No,No,4.0/5,424,450,Cafes,4.0,Amazing food!
16 | San Churro Cafe,Yes,No,3.8/5,918,800,Cafes,3.8,Decent experience.
17 | Cafe Vivacity,Yes,No,3.8/5,90,650,Cafes,3.8,Could be better.
18 | Catch-up-ino,Yes,No,3.9/5,133,800,Cafes,3.9,Could be better.
19 | Kirthi's Biryani,Yes,No,3.8/5,144,700,Cafes,3.8,Decent experience.
20 | T3H Cafe,No,No,3.9/5,93,300,Cafes,3.9,Decent experience.
21 | 360 Atoms Restaurant And Cafe,Yes,No,3.1/5,13,400,Cafes,3.1,Could be better.
22 | The Vintage Cafe,Yes,No,3.0/5,62,400,Cafes,3.0,Decent experience.
23 | Woodee Pizza,Yes,No,3.7/5,180,500,Cafes,3.7,Decent experience.
24 | Cafe Coffee Day,No,No,3.6/5,28,900,Cafes,3.6,Decent experience.
25 | My Tea House,Yes,No,3.6/5,62,600,Cafes,3.6,Decent experience.
26 | Hide Out Cafe,No,No,3.7/5,31,300,Cafes,3.7,It was okay.
27 | CAFE NOVA,No,No,3.2/5,11,600,Cafes,3.2,Decent experience.
28 | Coffee Tindi,Yes,No,3.8/5,75,200,Cafes,3.8,Decent experience.
29 | Sea Green Cafe,No,No,3.3/5,4,500,Cafes,3.3,Could be better.
30 | Cuppa,No,No,3.3/5,23,550,Cafes,3.3,Could be better.
31 | Srinathji's Cafe,No,No,3.8/5,148,550,Cafes,3.8,Could be better.
32 | Redberrys,Yes,No,4.0/5,219,600,Cafes,4.0,Fantastic service.
33 | Foodiction,Yes,No,2.8/5,506,500,other,2.8,Won’t come back.
34 | Sweet Truth,Yes,No,3.9/5,35,500,Dining,3.9,It was okay.
35 | Ovenstory Pizza,Yes,No,3.9/5,172,750,Dining,3.9,Decent experience.
36 | Faasos,Yes,No,4.2/5,415,500,other,4.2,Amazing food!
37 | Behrouz Biryani,Yes,No,3.9/5,230,650,Dining,3.9,Could be better.
38 | Fast And Fresh,Yes,No,2.8/5,91,400,Dining,2.8,Won’t come back.
39 | Szechuan Dragon,Yes,No,4.2/5,1647,600,Dining,4.2,Loved it!
40 | Empire Restaurant,Yes,No,4.4/5,4884,750,other,4.4,Fantastic service.
41 | Maruthi Davangere Benne Dosa,Yes,No,4.0/5,17,150,Dining,4.0,Loved it!
42 | Chaatimes,Yes,No,3.8/5,133,200,Dining,3.8,It was okay.
43 | Havyaka Mess,No,No,3.9/5,28,300,Dining,3.9,Decent experience.
44 | McDonald's,Yes,No,3.9/5,286,500,Dining,3.9,Could be better.
45 | Domino's Pizza,Yes,No,3.9/5,540,800,Dining,3.9,Could be better.
46 | Onesta,Yes,Yes,4.6/5,2556,600,other,4.6,Fantastic service.
47 | Hotboxit,No,No,3.8/5,36,400,Dining,3.8,Decent experience.
48 | Kitchen Garden,Yes,No,3.6/5,244,300,Dining,3.6,It was okay.
49 | Recipe,Yes,No,4.0/5,804,450,Dining,4.0,Fantastic service.
50 | Beijing Bites,Yes,No,3.7/5,679,850,Dining,3.7,Decent experience.
51 | Tasty Bytes,Yes,No,3.1/5,245,300,Dining,3.1,Could be better.
52 | Petoo,No,No,3.7/5,21,450,Dining,3.7,Decent experience.
53 | Shree Cool Point,Yes,No,4.1/5,28,150,Dining,4.1,Amazing food!
54 | Corner House Ice Cream,No,No,4.3/5,345,400,Dining,4.3,Loved it!
55 | Biryanis And More,Yes,No,4.0/5,618,750,Dining,4.0,Loved it!
56 | Roving Feast,No,No,4.0/5,1047,450,Dining,4.0,Amazing food!
57 | FreshMenu,Yes,No,3.9/5,627,450,Dining,3.9,It was okay.
58 | Banashankari Donne Biriyani,Yes,No,3.8/5,104,300,Dining,3.8,Could be better.
59 | Wamama,Yes,Yes,4.2/5,354,800,other,4.2,Fantastic service.
60 | Five Star Chicken,No,No,3.6/5,55,200,Dining,3.6,Could be better.
61 | XO Belgian Waffle,Yes,No,3.7/5,17,400,Dining,3.7,Decent experience.
62 | Peppy Peppers,No,No,4.2/5,244,800,other,4.2,Amazing food!
63 | Goa 0 Km,Yes,Yes,3.6/5,163,800,Dining,3.6,It was okay.
64 | Chinese Kitchen,Yes,No,3.8/5,58,150,Dining,3.8,Decent experience.
65 | Jeet Restaurant,No,Yes,4.0/5,808,850,Dining,4.0,Fantastic service.
66 | Cake of the Day,No,No,3.7/5,78,150,Dining,3.7,Decent experience.
67 | Kabab Magic,Yes,No,4.1/5,1720,400,Dining,4.1,Fantastic service.
68 | Namma Brahmin's Idli,Yes,No,3.6/5,34,100,Dining,3.6,Could be better.
69 | Gustoes Beer House,No,No,4.1/5,868,700,Dining,4.1,Amazing food!
70 | Sugar Rush,No,No,3.8/5,39,300,Dining,3.8,Decent experience.
71 | Burger King,Yes,No,3.2/5,71,600,Dining,3.2,It was okay.
72 | The Good Bowl,Yes,No,3.6/5,6,500,Dining,3.6,Decent experience.
73 | The Biryani Cafe,No,No,4.1/5,520,300,Dining,4.1,Fantastic service.
74 | Spicy Tandoor,No,No,4.1/5,0,150,Dining,4.1,Amazing food!
75 | LSD Cafe,No,No,2.9/5,84,700,other,2.9,Bad service.
76 | Rolls On Wheels,No,No,3.6/5,299,300,Dining,3.6,It was okay.
77 | Om Sri Vinayaka Chats,No,No,3.6/5,0,500,Dining,3.6,Decent experience.
78 | Sri Guru Kottureshwara Davangere Benne Dosa,Yes,No,4.1/5,558,150,Dining,4.1,Amazing food!
79 | Devanna Dum Biriyani Centre,Yes,No,3.6/5,28,300,Dining,3.6,Could be better.
80 | Kolbeh,No,No,3.7/5,22,500,Dining,3.7,It was okay.
81 | Upahar Sagar,No,No,3.8/5,39,350,Dining,3.8,Decent experience.
82 | Kadalu Sea Food Restaurant,Yes,No,3.8/5,153,500,Dining,3.8,It was okay.
83 | Frozen Bottle,Yes,No,4.2/5,146,400,Dining,4.2,Loved it!
84 | Parimala Sweets,No,No,3.5/5,14,200,Dining,3.5,It was okay.
85 | Vaishali Deluxe,No,No,3.8/5,42,700,Dining,3.8,It was okay.
86 | Chill Out,No,No,3.8/5,0,100,Dining,3.8,Could be better.
87 | The Big O Bakes,No,No,4.0/5,66,300,Dining,4.0,Amazing food!
88 | Meghana Foods,Yes,No,4.4/5,4401,600,Dining,4.4,Amazing food!
89 | Krishna Sagar,No,No,3.5/5,31,200,Dining,3.5,Could be better.
90 | Dessert Rose,No,No,3.5/5,7,500,Dining,3.5,It was okay.
91 | Chickpet Donne Biryani House,No,No,3.7/5,21,250,Dining,3.7,Could be better.
92 | Me And My Cake,No,No,3.7/5,0,500,Dining,3.7,Could be better.
93 | Sunsadm,No,No,3.7/5,0,400,Dining,3.7,Could be better.
94 | Annapooraneshwari Mess,No,No,3.7/5,0,200,Dining,3.7,It was okay.
95 | Thanco's Natural Ice Creams,No,No,3.2/5,9,300,Dining,3.2,It was okay.
96 | Nandhini Deluxe,No,No,2.6/5,283,600,Dining,2.6,Bad service.
97 | Vi Ra's Bar and Restaurant,No,No,3.3/5,62,800,Dining,3.3,Decent experience.
98 | Kaggis,No,No,3.8/5,64,250,Dining,3.8,Decent experience.
99 | Ayda Persian Kitchen,No,No,3.7/5,39,950,Dining,3.7,Could be better.
100 | Chatar Patar,No,No,3.7/5,65,300,Dining,3.7,Could be better.
101 | Polar Bear,Yes,No,3.8/5,71,400,Dining,3.8,It was okay.
102 | Kidambi's Kitchen,No,No,3.5/5,52,300,Dining,3.5,Decent experience.
103 | Mane Thindi,No,No,3.7/5,130,200,Dining,3.7,Decent experience.
104 | Kotian Karavali Restaurant,No,No,3.5/5,10,300,Dining,3.5,It was okay.
105 | Floured-Baked With Love,No,No,3.8 /5,45,400,Dining,3.8,It was okay.
106 | CAFE NOVA,No,No,3.2/5,11,600,Dining,3.2,Could be better.
107 | Cakes & Slices,No,No,3.5/5,13,300,Dining,3.5,Decent experience.
108 | Spice 9,No,No,3.4/5,8,300,Dining,3.4,It was okay.
109 | Coffee Shopee,No,No,3.4/5,0,250,Dining,3.4,Could be better.
110 | Naveen Kabab & Biriyani Mane,No,No,3.2/5,9,300,Dining,3.2,Could be better.
111 | Katriguppe Donne Biryani,No,No,3.2/5,4,300,Dining,3.2,Decent experience.
112 | Hari Super Sandwich,No,No,3.2/5,0,200,Dining,3.2,Decent experience.
113 | Atithi Point Ande Ka Funda,No,No,3.1/5,29,150,Dining,3.1,Decent experience.
114 | Just Bake,No,No,3.4/5,8,400,Dining,3.4,Could be better.
115 | Dharwad Line Bazaar Mishra Pedha,No,No,3.4/5,0,150,Dining,3.4,It was okay.
116 | Cake Bite,No,No,3.4/5,0,300,Dining,3.4,Decent experience.
117 | Aarush's Food Plaza,No,No,3.4/5,0,200,Dining,3.4,Decent experience.
118 | Wood Stove,No,No,3.4/5,0,150,Dining,3.4,Decent experience.
119 | Kulfi & More,No,No,3.4/5,0,150,Dining,3.4,Decent experience.
120 | Kannadigas Karavali,No,No,3.4/5,0,250,Dining,3.4,Could be better.
121 | K27 - The Pub,No,No,3.1/5,30,900,Dining,3.1,Decent experience.
122 | Bengaluru Coffee House,Yes,No,4.1/5,201,300,Dining,4.1,Fantastic service.
123 | New Mangalore Lunch Home,No,No,3.3/5,7,200,Dining,3.3,It was okay.
124 | Coffee Bytes,No,No,3.1/5,6,100,Dining,3.1,It was okay.
125 | Parjanya Chat Zone,No,No,3.3/5,17,200,Dining,3.3,Decent experience.
126 | Kwality Wall's Swirl's Happiness Station,No,No,2.9/5,25,200,Dining,2.9,Not good.
127 | Soms Kitchen & Bakes,No,No,2.9/5,0,400,Dining,2.9,Bad service.
128 | Banashankari Nati Style,No,No,2.9/5,0,350,Dining,2.9,Won’t come back.
129 | Ruchi Maayaka,No,No,3.3/5,8,100,Dining,3.3,Could be better.
130 | Mohitesh Hut Roll,No,No,3.3/5,0,150,Dining,3.3,It was okay.
131 | Sri Basaveshwar Jolada Rotti Oota,No,No,3.4/5,0,150,Dining,3.4,It was okay.
132 | Roll Magic Fast Food,No,No,3.4/5,0,200,Dining,3.4,Decent experience.
133 | Foodlieious Multi Cuisine,No,No,3.4/5,0,100,Dining,3.4,Could be better.
134 | Thanishka Nati And Karavali Style,No,No,3.1/5,0,400,Dining,3.1,It was okay.
135 | Swathi Cool Point,No,No,4.1/5,0,200,Dining,4.1,Amazing food!
136 | Kaumudis Juoice,No,No,3.3/5,0,150,Dining,3.3,It was okay.
137 | Amma - Manae,No,No,3.1/5,0,400,Dining,3.1,Decent experience.
138 | Sri Sai Tiffannies,No,No,3.3/5,0,150,Dining,3.3,It was okay.
139 | Hotel Andhra Speices,No,No,2.9/5,0,250,Dining,2.9,Won’t come back.
140 | Sri Murari Family Restaurant,No,No,2.9/5,0,250,Dining,2.9,Not good.
141 | Aramane Donne Biriyani,No,No,2.9/5,0,150,Dining,2.9,Not good.
142 | Darkolates,No,No,3.3/5,0,200,Dining,3.3,Decent experience.
143 | Swaada Healthy Kitchen,No,No,3.3/5,0,350,Dining,3.3,Decent experience.
144 | Gawdaru Mane Beriyani,No,No,3.3/5,0,300,Dining,3.3,Could be better.
145 | Melting Melodies,No,No,3.3/5,0,100,Dining,3.3,Decent experience.
146 | New Indraprasta,No,No,3.3/5,0,150,Dining,3.3,It was okay.
147 | Anna Kuteera,Yes,No,4.0/5,771,450,Dining,4.0,Amazing food!
148 | Darbar,No,No,3.0/5,98,800,Dining,3.0,It was okay.
149 | Vijayalakshmi,Yes,No,3.9/5,47,200,Dining,3.9,It was okay.
150 |
--------------------------------------------------------------------------------
/notebooks/Clustering.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "147ca278",
7 | "metadata": {},
8 | "outputs": [
9 | {
10 | "name": "stderr",
11 | "output_type": "stream",
12 | "text": [
13 | "<>:4: SyntaxWarning: invalid escape sequence '\\z'\n",
14 | "<>:4: SyntaxWarning: invalid escape sequence '\\z'\n",
15 | "C:\\Users\\Admin\\AppData\\Local\\Temp\\ipykernel_33924\\2730441881.py:4: SyntaxWarning: invalid escape sequence '\\z'\n",
16 | " file_path = 'E:\\zomoto-Data-Analysis\\data\\Zomato-data-.csv' # adjust if needed\n"
17 | ]
18 | }
19 | ],
20 | "source": [
21 | "import pandas as pd\n",
22 | "\n",
23 | "# Load data\n",
24 | "file_path = 'E:\\zomoto-Data-Analysis\\data\\Zomato-data-.csv' # adjust if needed\n",
25 | "df = pd.read_csv(file_path)\n"
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "execution_count": 8,
31 | "id": "0bf442bd",
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "name": "stderr",
36 | "output_type": "stream",
37 | "text": [
38 | "c:\\Users\\Admin\\anaconda3\\Lib\\site-packages\\sklearn\\cluster\\_kmeans.py:1429: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.\n",
39 | " warnings.warn(\n"
40 | ]
41 | },
42 | {
43 | "data": {
44 | "image/png": "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snPnTtx4442IjIyEXC6HUqnEfffdB5fLhYMHD17wa7ztttt8li9YsACXXHIJNBoNFAoFlEolfvrpJ+zbt6/KtoMHD4ZcLvc87tKlCwDgxIkTFxxXQ+nWrRtUKhX+85//YMmSJV5DiM7HarXip59+wi233AKdTlfl/bdarV5DwgDf57uubeNM+zujV69eSElJwS+//OIpe/zxx5Gbm4svvvgCAOB2uzF//nwMHjwYzZs3r9XxqvPzzz8DQJUhS7fffjv0ej1++uknAHU779X54osvcOWVVyIkJMTTbhctWuSz3fbv3x8Gg8HzODY2FjExMZ52azabsXXrVtx6661ePToGgwFDhgypcUxmsxlKpRJKpRJRUVF45JFHcOedd+Kll17y2s7pdOLll19GamoqVCoVFAoFVCoVDh065DP+2ujWrRuaNWvmeazRaNC2bVuv39GNGzfi6quvRlRUlKdMJpPhjjvuqNOxiZoSJhZE5NfHH3+MrVu34ueff8ZDDz2Effv24e677/bUnxkO8eSTT3ouHM78PProowCA/Px8AMC8efPw9NNP45tvvkH//v0RERGBm2++uUbL12ZkZKB3797IzMzE3Llz8euvv2Lr1q2ecfy1vRCtzNdwpNmzZ+ORRx5Bjx49sGLFCmzZsgVbt27Fdddd5/NYkZGRXo/VanWd4jpzAXRm6FkgtWrVCuvXr0dMTAzGjBmDVq1aoVWrVpg7d+55n1tQUACn04m33nqryvs/aNAgAGff/zN8ne+6tA2gYr6Jr7LKQ6nS0tLQu3dvT5v57rvvcPz4cTz22GPV7ru270VBQQEUCkWVIUuCIHjFVJfz7s9XX33lWQ73008/xebNm7F161Y88MADPueQnNtugYq2e6bdFhUVwe12+z2/NaXVarF161Zs3boVq1atQr9+/bBs2TK8+uqrXtuNHz8ezz//PG6++WasWrUKf/zxB7Zu3YquXbvW6XccOP9rBSreu9jY2Crb+SojIt84x4KI/OrQoYNnkmX//v3hcrnwwQcf4Msvv8TQoUM93+xNmjQJt956q899tGvXDgCg1+sxbdo0TJs2DTk5OZ5vqIcMGYL9+/dXG8c333wDs9mMr776CikpKZ5yX8tNajQa2Gy2KuX5+fle30Se4WsOw6effop+/fph/vz5XuWlpaXVxllfunfvjoiICKxcuRKvvPLKBc2zOPMNs81m8yQ6QNULfQDo3bs3evfuDZfLhW3btuGtt97CE088gdjYWNx1111+jxEeHg65XI57770XY8aM8bnNuSv++HotdWkbAJCdne2zrHXr1l5lY8eOxe23344dO3bg7bffRtu2bZGenl7tvuPj49G5c2esXbsWFovlvPMsIiMj4XQ6kZeX55VciKKI7Oxsz8Rj4MLPuz+ffvopWrRogc8//9zrPPv6faiJ8PBwCILg9/zWlEwm83yOAEB6ejouvfRSTJs2DcOHD0dycrIn/vvuuw8vv/yy1/Pz8/MRFhZ2Qa+hNiIjI33OHanNayVq6thjQUQ1NnPmTISHh+OFF16A2+1Gu3bt0KZNG+zevRvdu3f3+VN5qMUZsbGxGDFiBO6++24cOHAAFosFgP9v+s9cJFW+QBZFEe+//36VfTdv3hx79uzxKjt48KBnSFZNCILgdSygYmJnXZYUrU0vhlKpxNNPP439+/djxowZPrfJzc3F77//7ncfZ4b3nHsuVq1a5fc5crkcPXr08Hyrv2PHjmpj1+l06N+/P3bu3IkuXbr4fP99fVNcHX9tozqfffaZ1+P//e9/OHHiRJVJ9rfccguaNWuGCRMmYP369Xj00UdrlLQ9//zzKCoqwtixYyGKYpX6srIyrF27FgAwYMAAAKgy4XfFihUwm82e+spqe979OXMDusqvKTs72+eqUDWh1+tx+eWX46uvvvLq8SgtLa22HZ2PWq3GO++8A6vV6jWZ3tfv3ffff4/MzMwqzwfq1lPpS9++ffHzzz97Jd9ut9szfI6Izo89FkRUY+Hh4Zg0aRImTpyIpUuX4p577sHChQtx/fXX49prr8WIESOQmJiIwsJC7Nu3Dzt27PD8Ue7RowduuOEGdOnSBeHh4di3bx8++eQT9OzZ0/MtcOfOnQEAr732Gq6//nrI5XJ06dIF6enpUKlUuPvuuzFx4kRYrVbMnz/f54367r33Xtxzzz149NFHcdttt+HEiROYOXNmtavpnOuGG27AjBkzMGXKFPTt2xcHDhzA9OnT0aJFCzidzgs6d/5em0ql8rn9U089hX379mHKlCn4888/MWzYMCQnJ6OkpASbNm3Ce++9h2nTpuHKK6/0+fxBgwYhIiICo0aNwvTp06FQKLB48eIqS64uWLAAP//8MwYPHoxmzZrBarV6Vtm65pprAFSMqU9JScHKlSsxYMAAREREICoqCs2bN8fcuXNx1VVXoXfv3njkkUfQvHlzlJaW4vDhw1i1apVnzkF1atI2qrNt2zaMHj0at99+O06ePInnnnsOiYmJnuF4Z8jlcowZMwZPP/009Hp9tUu3Vnb77bfj+eefx4wZM7B//36MGjUKrVq1gsViwR9//IGFCxfizjvvxMCBA5Geno5rr70WTz/9NEwmE6688krPqlBpaWm499576+W8+3LDDTfgq6++wqOPPoqhQ4fi5MmTmDFjBuLj42s8rOxcM2bMwHXXXYf09HRMmDABLpcLr732GvR6PQoLCy9on0DFRfygQYPw0Ucf4ZlnnkGLFi1www03YPHixWjfvj26dOmC7du34/XXX6+y4lOrVq2g1Wrx2WefoUOHDggJCUFCQgISEhIuOB4AeO6557Bq1SoMGDAAzz33HLRaLRYsWOC5q7pMxu9iic5L4snjRBSEzqy2s3Xr1ip15eXlYrNmzcQ2bdp4VkLavXu3eMcdd4gxMTGiUqkU4+LixKuvvtprVaNnnnlG7N69uxgeHi6q1WqxZcuW4rhx48T8/HzPNjabTRw9erQYHR0tCoLgtRLLqlWrxK5du4oajUZMTEwUn3rqKfGHH34QAYi//PKLZx9ut1ucOXOm2LJlS1Gj0Yjdu3cXf/75Z7+rQn3xxRdVXqPNZhOffPJJMTExUdRoNOIll1wifvPNN+L9998vpqSkeLY7syrU66+/XmUfOGc1n+peW3VWrlwpDh48WIyOjhYVCoUYHh4u9u/fX1ywYIHXCkfnHk8UK1an6tWrl6jX68XExERxypQp4gcffOB17M2bN4u33HKLmJKSIqrVajEyMlLs27ev+O2333rta/369WJaWpqoVqtFAF4rbx07dkx84IEHxMTERFGpVIrR0dFir169vFZlqu5816Rt+HKmna5du1a89957xbCwMFGr1YqDBg0SDx065PM5x48fFwGIDz/8cLX79mXjxo3i0KFDxfj4eFGpVIpGo1Hs2bOn+Prrr3utrlReXi4+/fTTYkpKiqhUKsX4+HjxkUceEYuKijzb1Md59+XVV18VmzdvLqrVarFDhw7i+++/73OlJADimDFjqjzf16pq3377rdilSxdRpVKJzZo1E1999VW/q46d68yqUL7s3btXlMlk4siRI0VRFMWioiJx1KhRYkxM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i9dffx1HjhyBKIpo3bo19Hr9+Z9MREREREQXpQu+QV5WVhaysrLQtm1b6PV61HJEFRERERERXURqnVgUFBRgwIABaNu2LQYNGoSsrIolukaPHo0JE3jTFSIiIiKipqjWicW4ceOgVCqRkZEBne7sWNo777wTa9asqdfgiIiIiIiocaj1HIu1a9fixx9/RNI5S5a1adMGJ06cqLfAiIiIiIio8ah1j4XZbPbqqTgjPz8fai6TR0RERETUJNU6sejTpw8+/vhjz2NBEOB2u/H666+jf//+9RocERERERE1DrUeCvX666+jX79+2LZtG+x2OyZOnIi///4bhYWF+P333wMRIxERERERBbla91ikpqZiz549uPzyy5Geng6z2Yxbb70VO3fuRKtWrQIRIxERERERBbla91gAQFxcHKZNm1bfsRARERERUSN1QYlFcXEx/vzzT+Tm5sLtdnvV3XffffUSGBERERERNR61TixWrVqF4cOHw2w2w2AwQBAET50gCEwsiIiIiIiaoFrPsZgwYQIeeOABlJaWori4GEVFRZ6fwsLCQMRIRERERERBrtaJRWZmJsaOHevzXha1NX/+fHTp0gVGoxFGoxE9e/bEDz/84Hf7DRs2QBCEKj/79+/32m7FihVITU2FWq1Gamoqvv766zrHSsGpoNSGY7llAIATeWYUm+0SRxTcsorLcSi7FLszinAsrwwlPF9UjwpKbTiSU4oDp0uQXVwOp8t9/icREdFFo9ZDoa699lps27YNLVu2rPPBk5KS8Oqrr6J169YAgCVLluCmm27Czp070bFjR7/PO3DgAIxGo+dxdHS05/+bN2/GnXfeiRkzZuCWW27B119/jTvuuAO//fYbevToUeeYKXhkFlow6/t92H40DxO6AaM/2IK+HRPw8NWtER9e98T3YnMi34yXvvkLe04WAwAUcgE3X5qM4b1SeL6oTtxuEYdzSvHcF7txssACANCrFfjvwLa4umMcjFqlxBESEVFDqHViMXjwYDz11FP4559/0LlzZyiV3n8wbrzxxhrva8iQIV6PX3rpJcyfPx9btmypNrGIiYlBWFiYz7o5c+YgPT0dkyZNAgBMmjQJGzduxJw5c7Bs2bIax0bBLaekHNO/3ovdGcVQ/dvv5haBH/dkAQDGX9ceoXqVhBEGl8xCMyYu24kT+WZPmdMl4ss/M6BVyTCiTwvo1TxfdGGyS8rx8Ed/wmJzecrMNideXfUPYkM16NkmuppnExHRxaLWicWDDz4IAJg+fXqVOkEQ4HK5qpTXhMvlwhdffAGz2YyePXtWu21aWhqsVitSU1MxefJkrzt+b968GePGjfPa/tprr8WcOXMuKC4KTiUWB3ZnFPusW/9XNkb2acnEopKcEptXUlHZij9P4oa0RCYWdME2H8r3Sioqm7/+ENonhCKcv49ERBe9WicW5y4vW1d79+5Fz549YbVaERISgq+//hqpqak+t42Pj8d7772HSy+9FDabDZ988gkGDBiADRs2oE+fPgCA7OxsxMbGej0vNjYW2dnZfmOw2Wyw2WyexyaTCQDgcDjgcDjq+hIpAHKKzVDJRACo8i8gosRshSNMLVF0wedYbkml8+PN6XSirNwGh4Pny5cznwH8LPDvr5OFftvXqYJSlFvtCFEJPuubOrYvCiS2L6oPtWk/giiKvv8aNBC73Y6MjAwUFxdjxYoV+OCDD7Bx40a/ycW5hgwZAkEQ8O233wIAVCoVlixZgrvvvtuzzWeffYZRo0bBarX63MfUqVN93vBv6dKl9TJJnYiIiIioMbJYLBg2bBhKSkq85jj7ckE3yDObzdi4cSMyMjJgt3uvKjN27Nha7UulUnkmb3fv3h1bt27F3LlzsXDhwho9/4orrsCnn37qeRwXF1eldyI3N7dKL0ZlkyZNwvjx4z2PTSYTkpOTMXDgwPOeQJJGTokVz3+5G0dyyqCSifhvFzve2qOC3S2gZ+soTBjcgUMvKskstODJpTuRa6qaXN+YlohR/VoiRMvz5YvD4cC6deuQnp5eZU4ZVThdVI5R72+B3Vm1R/v5WzqhXwf/n79NHdsXBRLbF9WHMyN5aqLWicXOnTsxaNAgWCwWmM1mREREID8/HzqdDjExMbVOLM4liqLXsKSaxBMfH+953LNnT6xbt85rnsXatWvRq1cvv/tQq9VQq6sOA1EqlfxFDFJJUUpMG5qG57/cjWM5FQ3e7hbQJSUSY69PRUwYe5oqax4bileHXYpJn+/yrNoDAP06xGBY71YIN/J8nQ8/D/xLjJBj1j2X4ZnlO1FsqegyV8gFjOzTEpe1iuF5qwG2Lwokti+qi9q0nVonFuPGjcOQIUMwf/58hIWFYcuWLVAqlbjnnnvw+OOP12pfzz77LK6//nokJyejtLQUy5cvx4YNG7BmzRoAFT0JmZmZ+PjjjwFUrPjUvHlzdOzYEXa7HZ9++ilWrFiBFStWePb5+OOPo0+fPnjttddw0003YeXKlVi/fj1+++232r5UCnLNovR47a40FJaW49COX/HeqMsRYdQhxqiROrSg1DrWgDfvuQQmixMmqwPRBjUMGgViQrVSh0aNnEIhQ+fkMCx5uBcKymywOVyIMWoQEaKCVnVBHeNERNQI1foTf9euXVi4cCHkcjnkcjlsNhtatmyJmTNn4v7778ett95a433l5OTg3nvvRVZWFkJDQ9GlSxesWbMG6enpAICsrCxkZGR4trfb7XjyySeRmZkJrVaLjh074vvvv8egQYM82/Tq1QvLly/H5MmT8fzzz6NVq1b4/PPPeQ+Li1RcmBaRegUOAWgVa+A3MueRFKEHIqSOgi5GcpmA2FANYkOZ2BMRNVW1TiyUSiUEoWJ1j9jYWGRkZKBDhw4IDQ31SgJqYtGiRdXWL1682OvxxIkTMXHixPPud+jQoRg6dGitYiEiIiIiogtX68QiLS0N27ZtQ9u2bdG/f3+88MILyM/PxyeffILOnTsHIkYiIiIiIgpysto+4eWXX/ZMlp4xYwYiIyPxyCOPIDc3F++99169B0hERERERMGv1j0W3bt39/w/Ojoaq1evrteAiIiIiIio8al1jwVQcafe9evXY+HChSgtLQUAnD59GmVlZfUaHBERERERNQ617rE4ceIErrvuOmRkZMBmsyE9PR0GgwEzZ86E1WrFggULAhEnEREREREFsVr3WDz++OPo3r07ioqKoNWeXf/+lltuwU8//VSvwRERERERUeNQ6x6L3377Db///jtUKpVXeUpKCjIzM+stMCIiIiIiajxq3WPhdrvhcrmqlJ86dQoGg6FegiIiIiIiosal1olFeno65syZ43ksCALKysowZcoUrztgExERERFR01HroVBvvvkm+vfvj9TUVFitVgwbNgyHDh1CVFQUli1bFogYiYiIiIgoyNU6sUhISMCuXbuwbNky7NixA263G6NGjcLw4cO9JnMTEREREVHTUevEAgC0Wi0eeOABPPDAA/UdDxERERERNUI1Siy+/fbbGu/wxhtvvOBgCCi3O1FQZofZ5oROJUeEXg295oLyv3qVZypHmdWFMpsDerUSRo0CUUaN1GGhsMyGQlM5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c3ON3W43ixcv9oxJT083fn5+ZtWqVQ27AmiUCgoKzHXXXWeSk5PNzTffbCZMmGCMYX7BN08//bQZNGhQjf3ML/ji9ttvNz//+c+92u6++27z4IMPGmOYX7AWeyzQJOTl5UmSoqOjJUmHDx9WZmamhg0b5hnjcDh08803a8OGDZKk1NRUud1urzGJiYnq2rWrZwyubmPGjNHtt9+u73//+17tzC/44uOPP1afPn00cuRIxcXFqWfPnvrzn//s6Wd+wReDBg3SP//5Tx04cECStGvXLq1fv97zRcHML1jJ0m/eBurCGKPJkydr0KBB6tq1qyQpMzNTkhQfH+81Nj4+XkePHvWMCQwMVFRUVJUx55fH1Wvx4sXavn27tm7dWqWP+QVffPPNN5ozZ44mT56sZ555Rlu2bNH48ePlcDj00EMPMb/gk6efflp5eXnq2LGj/P39VVFRoRdffFE/+9nPJLH9grUIFmj0xo4dqy+//FLr16+v0mez2bxuG2OqtF2sLmPw3Xb8+HFNmDBBq1evVlBQUI3jmF/4NiorK9WnTx+99NJLkqSePXtq7969mjNnjh566CHPOOYXvo0lS5bo/fff16JFi9SlSxft3LlTEydOVGJiokaPHu0Zx/yCFTgUCo3auHHj9PHHH2vt2rVq0aKFp7158+aSVOWTldOnT3s+pWnevLnKysqUk5NT4xhcnVJTU3X69Gn17t1bAQEBCggIUEpKimbPnq2AgADP/GB+4dtISEhQ586dvdo6deqkY8eOSWL7Bd/85je/0X//93/rpz/9qa6//nqNGjVKkyZN0vTp0yUxv2AtggUaJWOMxo4dq2XLlunzzz9XmzZtvPrbtGmj5s2bKzk52dNWVlamlJQUDRw4UJLUu3dv2e12rzEZGRnas2ePZwyuTrfeeqt2796tnTt3en769OmjBx54QDt37lTbtm2ZX/jWbrzxxiqXxz5w4IBatWolie0XfFNcXCw/P++3b/7+/p7LzTK/YCmrzhoHavPEE08Yp9Np1q1bZzIyMjw/xcXFnjEvv/yycTqdZtmyZWb37t3mZz/7mUlISDD5+fmeMb/85S9NixYtzJo1a8z27dvNLbfcYrp3727Ky8utWC00YhdeFcoY5he+vS1btpiAgADz4osvmq+//tp88MEHJiQkxLz//vueMcwvfFujR48211xzjfn73/9uDh8+bJYtW2ZiY2PNU0895RnD/IJVCBZolCRV+zN//nzPmMrKSvPcc8+Z5s2bG4fDYQYPHmx2797tdT8lJSVm7NixJjo62gQHB5s77rjDHDt2rIHXBk3BxcGC+QVffPLJJ6Zr167G4XCYjh07mnfffdern/mFbys/P99MmDDBtGzZ0gQFBZm2bduaqVOnGpfL5RnD/IJVbMYYY+UeEwAAAABNH+dYAAAAAPAZwQIAAACAzwgWAAAAAHxGsAAAAADgM4IFAAAAAJ8RLAAAAAD4jGABAAAAwGcECwAAAAA+I1gAACzx+eefq2PHjqqsrPS0vfvuu0pKSpKfn59mzZplXXHfQQsWLFBkZGSdx7tcLrVs2VKpqan1VxSA7xSCBQDUYMOGDfL399cPfvADq0u5YpYuXaohQ4bI6XQqLCxM3bp10wsvvKDs7Owrcv+tW7eucyB46qmnNHXqVPn5nftTlJ+fr7Fjx+rpp59Wenq6Hn/88StS07epDZLD4dCTTz6pp59+2upSADQRBAsAqMG8efM0btw4rV+/XseOHWuQx3S73fV231OnTtV9992nvn376rPPPtOePXs0Y8YM7dq1S++99169PW51NmzYoK+//lojR470tB07dkxut1u33367EhISFBIS8q3uuz6fw6vNAw88oH/961/av3+/1aUAaAIIFgBQjaKiIv3v//6vnnjiCd1xxx1asGCBV/+6detks9n06aefqnv37goKClL//v21e/duz5jzh5589NFHat++vYKCgjR06FAdP37cM+b5559Xjx49NG/ePLVt21YOh0PGGB07dkwjRoxQWFiYIiIidO+99+rUqVOSpK+++kohISFatGiR536WLVumoKAgr8e/0JYtW/TSSy9pxowZeu211zRw4EC1bt1aQ4cO1dKlSzV69GjP2Dlz5ujaa69VYGCgOnToUCV0PP/882rZsqUcDocSExM1fvx4SdKQIUN09OhRTZo0STabTTabrcbnd/HixRo2bJiCgoI8z9X1118vSWrbtq1sNpuOHDlSp3psNpvefvttjRgxQqGhofr9739f5fGqq80Yo2bNmmnp0qWecT169FBcXJzn9saNG2W321VYWChJtb4u1Tly5IhsNpsWL16sgQMHKigoSF26dNG6deu8xu3bt0/Dhw9XWFiY4uPjNWrUKJ09e9bT73K5NH78eMXF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",
45 | "text/plain": [
46 | ""
47 | ]
48 | },
49 | "metadata": {},
50 | "output_type": "display_data"
51 | },
52 | {
53 | "name": "stdout",
54 | "output_type": "stream",
55 | "text": [
56 | "\n",
57 | "Cluster Summary (Mean Values):\n",
58 | " rate_cleaned approx_cost(for two people) votes\n",
59 | "cluster \n",
60 | "0 3.892308 632.692308 394.538462\n",
61 | "1 3.448913 287.500000 46.510870\n",
62 | "2 4.500000 637.500000 3599.250000\n"
63 | ]
64 | }
65 | ],
66 | "source": [
67 | "import pandas as pd\n",
68 | "from sklearn.preprocessing import StandardScaler\n",
69 | "from sklearn.cluster import KMeans\n",
70 | "import seaborn as sns\n",
71 | "import matplotlib.pyplot as plt\n",
72 | "\n",
73 | "# Step 1: Load your data (Skip this if df is already defined)\n",
74 | "# df = pd.read_csv(\"your_data.csv\")\n",
75 | "\n",
76 | "# Step 2: Clean 'rate' column → Create 'rate_cleaned'\n",
77 | "df['rate_cleaned'] = df['rate'].replace(['NEW', '-'], None)\n",
78 | "df['rate_cleaned'] = df['rate_cleaned'].str.extract(r'(\\d+\\.\\d+)').astype(float)\n",
79 | "\n",
80 | "# Step 3: Clean 'approx_cost(for two people)' column\n",
81 | "# Clean 'approx_cost(for two people)' column\n",
82 | "df['approx_cost(for two people)'] = df['approx_cost(for two people)'].astype(str).str.replace(',', '', regex=False)\n",
83 | "df['approx_cost(for two people)'] = df['approx_cost(for two people)'].astype(float)\n",
84 | "\n",
85 | "# Step 4: Drop rows with missing values in selected features\n",
86 | "df = df.dropna(subset=['rate_cleaned', 'approx_cost(for two people)', 'votes'])\n",
87 | "\n",
88 | "# Step 5: Select features for clustering\n",
89 | "X = df[['rate_cleaned', 'approx_cost(for two people)', 'votes']]\n",
90 | "\n",
91 | "# Step 6: Scale the features\n",
92 | "scaler = StandardScaler()\n",
93 | "X_scaled = scaler.fit_transform(X)\n",
94 | "\n",
95 | "# Step 7: Apply KMeans clustering (you can change n_clusters)\n",
96 | "kmeans = KMeans(n_clusters=3, random_state=42)\n",
97 | "df['cluster'] = kmeans.fit_predict(X_scaled)\n",
98 | "\n",
99 | "# Step 8: Visualize the clusters\n",
100 | "plt.figure(figsize=(8, 6))\n",
101 | "sns.scatterplot(data=df,\n",
102 | " x='approx_cost(for two people)',\n",
103 | " y='rate_cleaned',\n",
104 | " hue='cluster',\n",
105 | " palette='Set1')\n",
106 | "plt.title('Restaurant Clusters by Cost and Rating')\n",
107 | "plt.xlabel('Approx Cost (for two people)')\n",
108 | "plt.ylabel('Cleaned Rating')\n",
109 | "plt.legend(title='Cluster')\n",
110 | "plt.grid(True)\n",
111 | "plt.tight_layout()\n",
112 | "plt.show()\n",
113 | "\n",
114 | "# Step 9: Show cluster-wise summary\n",
115 | "print(\"\\nCluster Summary (Mean Values):\")\n",
116 | "print(df.groupby('cluster')[['rate_cleaned', 'approx_cost(for two people)', 'votes']].mean())\n"
117 | ]
118 | },
119 | {
120 | "cell_type": "code",
121 | "execution_count": 17,
122 | "id": "7adcf122",
123 | "metadata": {},
124 | "outputs": [],
125 | "source": [
126 | "import random\n",
127 | "\n",
128 | "def generate_review(rating):\n",
129 | " if rating >= 4.0:\n",
130 | " return random.choice(['Amazing food!', 'Loved it!', 'Fantastic service.'])\n",
131 | " elif rating >= 3.0:\n",
132 | " return random.choice(['It was okay.', 'Decent experience.', 'Could be better.'])\n",
133 | " else:\n",
134 | " return random.choice(['Not good.', 'Bad service.', 'Won’t come back.'])\n",
135 | "\n",
136 | "df['review_text'] = df['rate_cleaned'].apply(generate_review)\n"
137 | ]
138 | },
139 | {
140 | "cell_type": "code",
141 | "execution_count": 14,
142 | "id": "7003dd6e",
143 | "metadata": {},
144 | "outputs": [
145 | {
146 | "name": "stdout",
147 | "output_type": "stream",
148 | "text": [
149 | "['name', 'online_order', 'book_table', 'rate', 'votes', 'approx_cost(for two people)', 'listed_in(type)', 'rate_cleaned', 'cluster', 'review_text', 'sentiment']\n",
150 | " review_text sentiment\n",
151 | "0 Amazing food! 0.750000\n",
152 | "1 Loved it! 0.875000\n",
153 | "2 Decent experience. 0.166667\n",
154 | "3 Decent experience. 0.166667\n",
155 | "4 It was okay. 0.500000\n"
156 | ]
157 | }
158 | ],
159 | "source": [
160 | "\n",
161 | "print(df.columns.tolist())\n",
162 | "from textblob import TextBlob\n",
163 | "\n",
164 | "def get_sentiment(text):\n",
165 | " return TextBlob(text).sentiment.polarity\n",
166 | "\n",
167 | "df['sentiment'] = df['review_text'].apply(get_sentiment)\n",
168 | "\n",
169 | "# Now explore\n",
170 | "print(df[['review_text', 'sentiment']].head())\n"
171 | ]
172 | },
173 | {
174 | "cell_type": "code",
175 | "execution_count": 15,
176 | "id": "0f291a19",
177 | "metadata": {},
178 | "outputs": [],
179 | "source": [
180 | "def label_sentiment(polarity):\n",
181 | " if polarity > 0.2:\n",
182 | " return 'Positive'\n",
183 | " elif polarity < -0.2:\n",
184 | " return 'Negative'\n",
185 | " else:\n",
186 | " return 'Neutral'\n",
187 | "\n",
188 | "df['sentiment_label'] = df['sentiment'].apply(label_sentiment)\n"
189 | ]
190 | },
191 | {
192 | "cell_type": "code",
193 | "execution_count": 16,
194 | "id": "f8d5eaa2",
195 | "metadata": {},
196 | "outputs": [
197 | {
198 | "name": "stderr",
199 | "output_type": "stream",
200 | "text": [
201 | "C:\\Users\\Admin\\AppData\\Local\\Temp\\ipykernel_33924\\1380803189.py:4: FutureWarning: \n",
202 | "\n",
203 | "Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.\n",
204 | "\n",
205 | " sns.countplot(data=df, x='sentiment_label', palette='Set2')\n"
206 | ]
207 | },
208 | {
209 | "data": {
210 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHFCAYAAAAUpjivAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCG0lEQVR4nO3df3zN9f//8fsx29nv+TWb1WzU8iO/8iOZMsIWkpJ6Z8rPUERS9F6SUe+Jd0lvoo/6vEdJUUnekvK7vCeGpPBR3uZHWBNrQ7Nhz+8fvnu9nTay2ex4uV0vl3O5eD1fz9fr9TjnvM7Z3fP14ziMMUYAAAA2VaG8CwAAAChLhB0AAGBrhB0AAGBrhB0AAGBrhB0AAGBrhB0AAGBrhB0AAGBrhB0AAGBrhB0AAGBrhJ1r0IYNG3TfffepZs2acjqdCgkJUatWrfT000+X6XZ///13JSYmas2aNYXmzZ49Ww6HQ3v37i3TGi7XvHnzNHXq1Evu37ZtWzkcDjkcDlWoUEEBAQG68cYb9cADD+ijjz5Sfn5+oWUiIyPVt2/fYtWVkpKixMRE/fbbb8Va7o/bWrNmjRwOhz766KNiredi7PC+P//886pZs6YqVqyoSpUqXbBfYmKi9X47HA55enqqZs2aGjhwoNLT08usvuLul1eTy/nMORwOeXt7q379+nrppZeUl5dXdoX+/223bdu2TLeBEjK4pixZssRUqFDB3Hnnneb99983a9asMe+//755+umnzXXXXVem2z5y5IiRZMaNG1doXkZGhlm/fr05depUmdZwubp06WIiIiIuuX9MTIypXbu2Wb9+vVm/fr1ZsWKFeeutt0yXLl2MJHPHHXeY3377zWWZLVu2mN27dxerrr///e9GkklLSyvWcn/c1urVq40k8+GHHxZrPRdztb/vixYtMpLMmDFjzLp160xqauoF+44bN85IMsuWLTPr1683y5cvN6NGjTIVKlQw9evXN3l5eWVSY3H3y6vJ5X7mFi9ebO655x4jyQwcOLDsCjXGbN++3Wzfvr1Mt4GSqVh+MQvlYfLkyapVq5a++OILVaz437f/oYce0uTJk8utruDgYAUHB5fb9suSj4+PbrvtNpe2Rx99VMnJyerfv78GDRqk+fPnW/NuueWWMq8pJydHPj4+V2RbF3M1vO8//PCDJGn48OGqXr36JS3TrFkzVatWTZLUoUMH/frrr0pOTta6devUrl27Mqu1vOTk5Mjb21sOh6O8S5FU+DPXqVMn1a9fX3PmzNE//vEPeXt7l8l269evXybrxeXjMNY15ujRo6pWrZpL0ClQoULh3WH+/Plq1aqV/Pz85O/vr7i4OH377bcuffr27St/f3/t3r1bnTt3lr+/v8LDw/X0008rNzdXkrR3717rj9r48eOtIeaCQyhFHc5o27atGjRooPXr1ys6Olo+Pj6KjIxUcnKyJOmzzz5T06ZN5evrq4YNG2rZsmWF6v/pp58UHx+v6tWry+l0ql69enrjjTdc+hQcunn//fc1ZswYhYWFKTAwUB06dNCuXbtc6vnss8+0b98+l2HykurXr586d+6sDz/8UPv27bPa/3hoKT8/Xy+99JLq1KkjHx8fVapUSY0aNdLrr78u6dyhk1GjRkmSatWqZdVVcNgoMjJSd999txYuXKhbbrlF3t7eGj9+fJHbKnDq1CmNHDlSoaGh8vHxUUxMTKH3/UJD9n379lVkZKSkkr3vkvTPf/5TjRs3lre3t6pUqaL77rtPO3fuLLSdP9vvLiY/P1+TJ09W3bp15XQ6Vb16dfXu3Vs///yz1ScyMlLPP/+8JCkkJEQOh0OJiYl/uu4/at68uSTpl19+cWlfsWKF2rdvr8DAQPn6+qp169ZauXKlS58jR45o0KBBCg8Pl9PpVHBwsFq3bq0VK1ZI+vP9cvz48WrZsqWqVKmiwMBANW3aVP/7v/8r84ffgL7Qc/vjPlLwnn355Zfq37+/goOD5evrq9zcXO3evVv9+vVTVFSUfH19dd1116lr1676/vvvXdZ5pT9zFStWVJMmTZSXl+dyqNcYoxkzZqhJkyby8fFR5cqV1aNHD+3Zs8fqM2LECPn5+Sk7O7vQev/yl78oJCREp0+ftur942ciLy9PL730krWfBQcHq1+/fjpy5IjVZ9SoUQoKCtLZs2ettmHDhsnhcOjvf/+71Xb06FFVqFBB06ZNk/Tn3w34L8LONaZVq1basGGDhg8frg0bNlgf0qIkJSWpZ8+eql+/vhYsWKB3331Xx48f1x133KEdO3a49D19+rTuuecetW/fXp9++qn69++v1157TZMmTZIk1ahRwwojAwYM0Pr167V+/XqNHTv2ovWmp6erX79+evTRR/Xpp5+qYcOG6t+/vyZMmKCEhASNHj1aH3/8sfz9/XXvvffq0KFD1rI7duxQixYt9MMPP+jVV1/VkiVL1KVLFw0fPtz6Y3++5557Tvv27dPbb7+tWbNm6aefflLXrl2tL6AZM2aodevWCg0Ntepfv379pb3wF3DPPffIGKOvv/76gn0mT56sxMRE9ezZU5999pnmz5+vAQMGWF/ajz76qIYNGyZJWrhwoVVX06ZNrXVs2bJFo0aN0vDhw7Vs2TLdf//9F63rueee0549e/T222/r7bff1qFDh9S2bVuXPwKXoiTv+8SJEzVgwADdfPPNWrhwoV5//XVt27ZNrVq10k8//eTS98/2u4t5/PHH9eyzz6pjx45avHixXnzxRS1btkzR0dH69ddfJUmffPKJBgwYIElatmyZ1q9fr0cffbRYr4EkpaWlSZJuuukmq23u3LmKjY1VYGCg5syZowULFqhKlSqKi4tzCTyPPPKIFi1apBdeeEFffvml3n77bXXo0EFHjx6V9Of75d69ezV48GAtWLBACxcuVPfu3TVs2DC9+OKLxX4e5+vfv788PT317rvv6qOPPpKnp6cOHTqkqlWr6uWXX9ayZcv0xhtvqGLFimrZsqVLiClwJT9zaWlpqlSpkstI4uDBgzVixAh16NBBixYt0owZM7R9+3ZFR0dbwbR///76/ffftWDBApf1/fbbb/r000/18MMPy9PTs8ht5ufnq1u3bnr55ZcVHx+vzz77TC+//LKWL1+utm3bKicnR9K50b/s7Gxt3LjRWnbFihXy8fHR8uXLrbaVK1fKGKMOHTpI+vPvBpynfI+i4Ur79ddfze23324kGUnG09PTREdHm4kTJ5rjx49b/fbv328qVqxohg0b5rL88ePHTWhoqHnwwQettj59+hhJZsGCBS59O3fubOrUqWNNX+zcjeTk5ELnnMTExBhJZtOmTVbb0aNHjYeHh/Hx8TEHDx602rdu3WokmX/84x9WW1xcnLn++utNVlaWy7aeeOIJ4+3tbY4dO2aM+e95Kp07d3bpt2DBAiPJrF+/3moryfkDN9988wXnf/7550aSmTRpktUWERFh+vTpY03ffffdpkmTJhfdzsXO2YmIiDAeHh5m165dRc47f1sFr0XTpk1Nfn6+1b53717j6elpHn30UZfnFhMTU2idffr0cXmNivO+Z2ZmGh8fn0Lvxf79+43T6TTx8fEu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0aNKSUlxWVdxamvVqpV8fHw0d+5cl/aff/5Zq1atcvmivxx33nmnJBXaTmpqqnbu3Flq25HOhYI33nhDHh4e1pVdrVu3VqVKlbRjx44Lfr4KRivPV7NmTT3xxBPq2LGjtmzZYrVfaL90OByqWLGiPDw8rLacnBy9++67hfpGRkZq27ZtLm2rVq3SiRMnivVc/xgcPvvsMx08ePCS1/FHpfGZKzhp+pdffrGuZLr77rtljNHBgweLfP0bNmzoso5+/frp0KFDWrp0qebOnav77rvvTwPc3XffraNHj+rs2bNFbqNOnTpW31tvvVWBgYGaOnWq0tPT1bFjR0nnRny+/fZbLViwQPXr17/gKPCFvhtwDiM715i4uDhdf/316tq1q+rWrav8/Hxt3bpVr776qvz9/fXkk09KOvfFN2HCBI0ZM0Z79uzRXXfdpcqVK+uXX37Rxo0b5efnV+QVTRcTEBCgiIgIffrpp2rfvr2qVKmiatWqWZcpl7bXX39dt99+u+644w49/vjjioyM1PHjx7V7927961//0qpVq4q9zoYNG2rhwoWaOXOmmjVrpgoVKvxp8MvJybHOD8rJydGePXu0aNEiLVmyRDExMXrzzTcvunzXrl3VoEEDNW/eXMHBwdq3b5+mTp2qiIgIRUVFWXUVPOc+ffrI09NTderUcfmfY3FkZGTovvvu08CBA5WVlaVx48bJ29tbCQkJVp9HHnlE//M//6OHH35YAwcO1NGjRzV58mQFBga6rKs473ulSpU0duxYPffcc+rdu7d69uypo0ePavz48fL29rb+t3u56tSpo0GDBmnatGmqUKGCOnXqpL1792rs2LEKDw/XU089VSrbKRAVFaVBgwZpxowZWrdunW6//XZNmzZNffr00bFjx9SjRw9Vr15dR44c0XfffacjR45o5syZysrKUrt27RQfH6+6desqICBAqampWrZsmbp3726t/0L7ZZcuXTRlyhTFx8dr0KBBOnr0qF555ZUiRzIeeeQRjR07Vi+88IJiYmK0Y8cOTZ8+XUFBQZf8PO+++27Nnj1bdevWVaNGjbR582b9/e9/LzR6Vhwl+cwVpXfv3poyZYpeeeUVDR06VK1bt9agQYPUr18/bdq0SW3atJGfn58OHz6sdevWqWHDhnr88cet5WNjY3X99ddryJAh1lWif+ahhx7Se++9p86d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2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2Jrbh52DBw/q4YcfVtWqVeXr66smTZpo8+bN1nxjjBITExUWFiYfHx+1bdtW27dvL8eKAQCAO3HrsJOZmanWrVvL09NTn3/+uXbs2KFXX31VlSpVsvpMnjxZU6ZM0fTp05WamqrQ0FB17NhRx48fL7/CAQCA26hY3gVczKRJkxQeHq7k5GSrLTIy0vq3MUZTp07VmDFj1L17d0nSnDlzFBISonnz5mnw4MFXumQAAOBm3HpkZ/HixWrevLkeeOABVa9eXbfccoveeusta35aWprS09MVGxtrtTmdTsXExCglJaU8SgYAAG7GrcPOnj17NHPmTEVFRemLL77QY489puHDh+udd96RJKWnp0uSQkJCXJYLCQmx5hUlNzdX2dnZLg8AAGBPbn0YKz8/X82bN1dSUpIk6ZZbbtH27ds1c+ZM9e7d2+rncDhcljPGFGo738SJEzV+/PiyKRoAALgVtx7ZqVGjhurXr+/SVq9ePe3fv1+SFBoaKkmFRnEyMjIKjfacLyEhQVlZWdbjwIEDpVw5AABwF24ddlq3bq1du3a5tP3444+KiIiQJNWqVUuhoaFavny5NT8vL09r165VdHT0BdfrdDoVGBjo8gAAAPbk1oexnnrqKUVHRyspKUkPPvigNm7cqFmzZmnWrFmSzh2+GjFihJKSkhQVFaWoqCglJSXJ19dX8fHx5Vw9AABwB24ddlq0aKFPPvlECQkJmjBhgmrVqqWpU6eqV69eVp/Ro0crJydHQ4YM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+2TpuNiIToGrPuxI0siRI/XII4+oefPmatWqlWbNmqX9+/frscc4jAAAwLXOFmHnL3/5i44ePaoJEybo8OHDatCggZYuXaqIiIjyLg0AAJQzW4QdSRoyZIiGDBlS3mVc85xOp8aNG1foMCFQXtgn4W7YJ688h/mz67UAAACuYlf9TQUBAAAuhrADAABsjbADAABsjbCDy7Z37145HA5t3br1ov3atm2rESNGXJGagCthzZo1cjgc+u2338q7FNhYZGSkpk6dWt5lXNUIO9eQvn37yuFwyOFwyNPTU7Vr19Yzzzyjkycv77dqwsPDrUv+pQv/AVi4cKFefPHFy9oW7Klg33z55Zdd2hctWlSqdzW/1GCOa8eV2vcuxezZs4u8wW1qaqoGDSql31W4RhF2rjF33XWXDh8+rD179uill17SjBkz9Mwzz1zWOj08PBQaGqqKFS9+J4MqVaooICDgsrYF+/L29takSZOUmZlZ3qUoLy+vvEvAFeRO+15RgoOD5evrW95lXNUIO9cYp9Op0NBQhYeHKz4+Xr169dKiRYuUm5ur4cOHq3r16vL29tbtt9+u1NRUa7nMzEz16tVLwcHB8vHxUVRUlJKTkyW5/m957969ateunSSpcuXKcjgc6tu3ryTXw1gJCQm67bbbCtXXqFEjjRs3zppOTk5WvXr15O3trbp162rGjBll9MqgvHXo0EGhoaGaOHHiBfukpKSoTZs28vHxUXh4uIYPH+4yMulwOLRo0SKXZSpVqqTZs2dLkmrVqiVJuuWWW+RwONS2bVtJ5/53f++992rixIkKCwvTTTfdJEmaO3eumjdvroCAAIWGhio+Pl4ZGRml96ThFkpj3zt8+LC6dOkiHx8f1apVS/PmzSt0+GnKlClq2LCh/Pz8FB4eriFDhujEiROSzo2I9+vXT1lZWdYIfGJioiTXw1g9e/bUQw895FLb6dOnVa1aNes72RijyZMnq3bt2vLx8VHjxo310UcflcIrdfUi7FzjfHx8dPr0aY0ePVoff/yx5syZoy1btujGG29UXFycjh07JkkaO3asduzYoc8//1w7d+7UzJkzVa1atULrCw8P18cffyxJ2rVrlw4fPqzXX3+9UL9evXppw4YN+s9//mO1bd++Xd9//7169eolSXrrrbc0ZswY/e1vf9POnTuVlJSksWPHas6cOWXxUqCceXh4KCkpSdOmTdPPP/9caP7333+vuLg4de/eXdu2bdP8+fO1bt06PfHEE5e8jY0bN0qSVqxYocOHD2vhwoXWvJUrV2rnzp1avny5lixZIuncCM+LL76o7777TosWLVJaWpoV3mEfpbHv9e7dW4cOHdKaNWv08ccfa9asWYWCcYUKFfSPf/xDP/zwg+bMmaNVq1Zp9OjRkqTo6GhNnTpVgYGBOnz4sA4fPlzkqHuvXr20ePFiKyRJ0hdffKGTJ0/q/vvvlyQ9//zzSk5O1syZM7V9+3Y99dRTevjhh7V27dpSeb2uSgbXjD59+phu3bpZ0xs2bDBVq1Y1PXr0MJ6enua9996z5uXl5ZmwsDAzefJkY4wxXbt2Nf369StyvWlpaUaS+fbbb40xxqxevdpIMpmZmS79YmJizJNPPmlNN2rUyEyYMMGaTkhIMC1atLCmw8PDzbx581zW8eKLL5pWrVoV52njKnD+vnnbbbeZ/v37G2OM+eSTT0zB19QjjzxiBg0a5LLc119/bSpUqGBycnKMMcZIMp988olLn6CgIJOcnGyMKbyvnr/9kJAQk5ube9E6N27caCSZ48ePG2MuvK/j6lEa+97OnTuNJJOammrN/+mnn4wk89prr11w2wsWLDBVq1a1ppOTk01QUFChfhEREdZ68vLyTLVq1cw777xjze/Zs6d54IEHjDHGnDhxwnh7e5uUlBSXdQwYMMD07Nnz4i+GjTGyc41ZsmSJ/P395e3trVatWqlNmzYaNmyYTp8+rdatW1v9PD09deutt2rnzp2SpMcff1wffPCBmjRpotGjRyslJeWya+nVq5fee+89SeeGXd9//31rVOfIkSM6cOCABgwYIH9/f+vx0ksvuYwGwX4mTZqkOXPmaMeOHS7tmzdv1uzZs132h7i4OOXn5ystLe2yt9uwYUN5eXm5tH377bfq1q2bIiIiFBAQYB322r9//2VvD+6npPverl27VLFiRTVt2tRa5sYbb1TlypVd1rN69Wp17NhR1113nQICAtS7d28dPXq0WBeJeHp66oEHHrC+O0+ePKlPP/3U+u7csWOHTp06pY4dO7rU+84771zT3522+W0sXJp27dpp5syZ8vT0VFhYmDw9PfXdd99JUqErD4wxVlunTp20b98+ffbZZ1qxYoXat2+voUOH6pVXXilxLfHx8frrX/+qLVu2KCcnRwcOHLCORefn50s6dyirZcuWLst5eHiUeJtwf23atFFcXJyee+45l0NG+fn5Gjx4sIYPH15omZo1a0o6tw+bP/wCzunTpy9pu35+fi7TJ0+eVGxsrGJjYzV37lwFBwdr//79iouL4wRmmyrpvrdr164i13f+vrhv3z517txZjz32mF588UVVqVJF69at04ABAy55Hy3Qq1cvxcTEKCMjQ8uXL5e3t7c6depk1SpJn332ma677jqX5a7l3+Ii7Fxj/Pz8dOONN7q03XjjjfLy8tK6desUHx8v6dwfiE2bNrncFyc4OFh9+/ZV3759dccdd2jUqFFFhp2C/x2fPXv2orVcf/31atOmjd577z3l5OSoQ4cOCgkJkSSFhITouuuu0549e6z/seDa8fLLL6tJkybWicKS1LRpU23fvr3Q/nu+4OBgHT582Jr+6aef9Pvvv1vTl7pvStL//d//6ddff9XLL7+s8PBwSdKmTZuK/VxwdSnJvle3bl2dOXNG3377rZo1ayZJ2r17t8vtNzZt2qQzZ87o1VdfVYUK5w6qLFiwwGU9Xl5el7RvRkdHKzw8XPPnz9fnn3+uBx54wNq369evL6fTqf379ysmJqZYz93OCDuQn5+fHn/8cY0aNUpVqlRRzZo1NXnyZP3+++8aMGCAJOmFF15Qs2bNdPPNNys3N1dLlixRvXr1ilxfRESEHA6HlixZos6dO8vHx0f+/v5F9u3Vq5cSExOVl5en1157zWVeYmKihg8frsDAQHXq1Em5ubnatGmTMjMzNXLkyNJ9EeBWGjZsqF69emnatGlW27PPPqvbbrtNQ4cO1cCBA+Xn52edUFzQ784779T06dN12223KT8/X88++6w8PT2tdVSvXl0+Pj5atmyZrr/+enl7eysoKKjIGmrWrCkvLy9NmzZNjz32mH744QfuE3UNKMm+V7duXXXo0EGDBg2yRs6ffvpp+fj4WKPjN9xwg86cOaNp06apa9eu+ve//60333zTZduRkZE6ceKEVq5cqcaNG8vX17fIS84dDofi4+P15ptv6scff9Tq1auteQEBAXrmmWf01FNPKT8/X7fffruys7OVkpIif39/9enTp4xeOTdXvqcM4Ur64wnK58vJyTHDhg0z1apVM06n07Ru3dps3LjRmv/iiy+aevXqGR8fH1OlShXTrVs3s2fPHmNM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",
211 | "text/plain": [
212 | ""
213 | ]
214 | },
215 | "metadata": {},
216 | "output_type": "display_data"
217 | }
218 | ],
219 | "source": [
220 | "import seaborn as sns\n",
221 | "import matplotlib.pyplot as plt\n",
222 | "\n",
223 | "sns.countplot(data=df, x='sentiment_label', palette='Set2')\n",
224 | "plt.title(\"Sentiment Distribution of Restaurant Reviews\")\n",
225 | "plt.xlabel(\"Sentiment\")\n",
226 | "plt.ylabel(\"Count\")\n",
227 | "plt.show()\n"
228 | ]
229 | }
230 | ],
231 | "metadata": {
232 | "kernelspec": {
233 | "display_name": "base",
234 | "language": "python",
235 | "name": "python3"
236 | },
237 | "language_info": {
238 | "codemirror_mode": {
239 | "name": "ipython",
240 | "version": 3
241 | },
242 | "file_extension": ".py",
243 | "mimetype": "text/x-python",
244 | "name": "python",
245 | "nbconvert_exporter": "python",
246 | "pygments_lexer": "ipython3",
247 | "version": "3.12.7"
248 | }
249 | },
250 | "nbformat": 4,
251 | "nbformat_minor": 5
252 | }
253 |
--------------------------------------------------------------------------------