RushabhUpadhye/restaurant-data-analysis-eda

GitHub: RushabhUpadhye/restaurant-data-analysis-eda

该项目通过Python探索性分析餐厅数据,以发现高性价比餐饮选择。

Stars: 0 | Forks: 0

# 🍽️ 餐厅数据分析 —— 使用Python进行高级探索 一个数据科学迷你项目,通过**探索性数据分析**来揭示真实世界餐厅数据中的模式。目标是帮助美食爱好者发现所在区域评分最高、性价比最佳以及特定菜系的餐饮选择——这由数据驱动,而非仅凭口碑。 ## 📌 问题陈述 在快速演变的饮食文化中,食客常常难以找到提供最佳性价比的优质餐厅。本项目分析餐厅数据,旨在揭示以下方面的模式: - 双人餐价格与成本 - 用户评分与投票 - 菜系多样性 - 配送与服务可用性 - 跨印度城市的地理分布 ## 🎯 目标 - 加载并探索一个大型真实世界餐厅数据集(约20万条记录) - 通过处理缺失值来清洗和准备数据 - 可视化缺失数据模式 - 研究关键变量(成本、评分、投票数等)之间的相关性 - 使用箱线图检测离群值 - 根据城市名称构建一个新的 **`region`** 特征(例如,北印度、南印度) ## 📂 项目结构 ``` ├── food_dely.csv # Raw dataset (restaurant data) ├── Mini-Project.ipynb # Main Jupyter Notebook └── README.md # Project documentation ``` ## 📊 数据集概述 该数据集包含关于印度多个城市餐饮门店的信息,主要列如下: | 列名 | 描述 | |--------|-------------| | `name` | 餐厅名称 | | `city` | 餐厅所在城市 | | `locality` | 城市内的街区 | | `cuisines` | 提供的菜系列表 | | `average_cost_for_two` | 两人用餐的预估成本 | | `price_range` | 分层的成本范围(1=低,4=高端) | | `aggregate_rating` | 综合用户评分 | | `votes` | 用户反馈总票数 | | `photo_count` | 上传的照片数量 | | `delivery` | 是否提供配送服务 | | `highlights` | 特色服务(例如,户外座位、现场音乐) | | `region` | *(工程化生成)* 基于城市的地理区域 | ## 🛠️ 技术栈 - **Python 3** - **Pandas** —— 数据加载、清洗和操作 - **NumPy** —— 数值运算 - **Matplotlib** —— 自定义可视化 - **Seaborn** —— 统计图表(热力图、箱线图) ## 🔍 关键步骤 ### 1. 导入库并设置选项 导入标准的数据科学库并配置显示选项。 ### 2. 加载数据 使用 `pandas.read_csv()` 从 `food_dely.csv` 读取数据集。 ### 3. 理解数据 - 形状:**211,944 行 × 26 列** - 探索数据类型、列名和基本统计信息。 ### 4. 处理缺失值 识别缺失值并智能填充: - `establishment`, `address`, `cuisines` → 用**众数**填充 - `zipcode` → 如果是数值型则用**中位数**填充,如果是字符串则用**众数**填充 - `timings` → 用 `"Not Available"` 填充 - `highlights` → 用 `"No info given"` 填充 - `opentable_support` → 用 `0` 填充(假设不支持) ### 5. 相关性分析 为所有数值列生成相关性矩阵和热力图。显著发现: - `average_cost_for_two` 与 `price_range` **强相关**(~0.79) - `votes` 和 `photo_count` 显示出**中度正相关**(~0.65) ### 6. 离群值检测 为所有数值列创建箱线图,以直观识别以下列中的离群值: - `average_cost_for_two` - `votes` - `aggregate_rating` - `photo_count` 等 ### 7. 特征工程 —— `region` 列 通过将城市名称映射到地理区域,创建了一个新列 `region`: | 城市 | 区域 | |------|--------| | Delhi, Agra, Jaipur, Lucknow, Noida, Gurgaon | 北印度 | | Mumbai, Pune, Ahmedabad | 西印度 | | Bangalore, Hyderabad, Chennai | 南印度 | | Kolkata, Patna | 东印度 | | 其他城市 | 其他 | ## 📈 样例洞察 - **大多数餐厅**的 `price_range` 为 1–2(经济实惠) - **评分较高的餐厅**往往拥有更多的投票和照片 - **配送服务可用性**与综合评分呈正相关 - `zipcode` 的缺失值最多(约77%缺失) ## 🚀 如何运行 1. 克隆仓库或下载文件。 2. 确保已安装Python 3及所需库: pip install pandas numpy matplotlib seaborn tabulate 3. 将 `food_dely.csv` 放置在与notebook相同的目录中。 4. 在Jupyter Notebook或JupyterLab中打开并运行 `Mini-Project.ipynb`。 ## 👤 作者 **Rushabh Upadhye** 生成式AI的数据科学 —— Python迷你项目 ## 📝 许可证 本项目仅用于教育目的。
标签:BSD, Python, 商业智能, 异常值检测, 性价比分析, 探索性数据分析, 数据挖掘, 数据清洗, 数据科学, 数据预处理, 数据驱动决策, 无后门, 模式发现, 特征工程, 用户评分, 相关性分析, 统计分析, 资源验证, 逆向工具, 餐厅数据分析, 餐饮洞察, 餐饮行业