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, 商业智能, 异常值检测, 性价比分析, 探索性数据分析, 数据挖掘, 数据清洗, 数据科学, 数据预处理, 数据驱动决策, 无后门, 模式发现, 特征工程, 用户评分, 相关性分析, 统计分析, 资源验证, 逆向工具, 餐厅数据分析, 餐饮洞察, 餐饮行业