├── 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 | ![Dashboard Overview](data/Screenshot%202025-06-28%20141132.png) 13 | 14 | ### 📊 Visualizations and Clusters 15 | ![Visualizations](data/Screenshot%202025-06-28%20141154.png) 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("
⭐ Average Rating
{}
".format(round(filtered_df['rate_cleaned'].mean(), 2)), unsafe_allow_html=True) 97 | with col2: 98 | st.markdown("
💰 Avg Cost for Two
₹{}
".format(int(filtered_df['approx_cost(for two people)'].mean())), unsafe_allow_html=True) 99 | with col3: 100 | st.markdown("
🗳️ Total Votes
{}
".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": "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hASNHj1aH3/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 | --------------------------------------------------------------------------------