基于 Hadoop 和 Hive 的旅游景区数据的分析与可视化系统
本系统是一个基于 Python Flask 框架的旅游景区数据分析与可视化平台,采用 SQLite 模拟 Hadoop MapReduce 批处理与 Hive 数仓 SQL 分析流程,对接真实开源景区数据集与文化和旅游统计公报分省数据,提供数据总览、景区检索、多维分析、地图可视化、客流预测、报表导出等功能模块,适用于旅游景区数据分析和客流趋势预测场景。
项目封面

项目说明
基于 Hadoop 和 Hive 的旅游景区数据的分析与可视化系统
项目简介
本系统是一个基于 Python Flask 框架的旅游景区数据分析与可视化平台,采用 SQLite 模拟 Hadoop MapReduce 批处理与 Hive 数仓 SQL 分析流程,对接真实开源景区数据集与文化和旅游统计公报分省数据,提供数据总览、景区检索、多维分析、地图可视化、客流预测、报表导出等功能模块,适用于旅游景区数据分析和客流趋势预测场景。
功能模块
| 模块 | 功能说明 |
|---|---|
| 数据总览 | 展示核心 KPI 指标(景区总数、覆盖省份、游客总量、总收入),各省游客量排名柱状图、景区等级分布饼图、全国月度客流趋势图、热门景区 TOP15 排行表 |
| 景区库 | 支持多条件(关键词、省份、等级)组合检索与分页浏览,提供景区详情查看(含月度客流与收入图表) |
| 多维分析 | 年度对比分析(分省游客量双年份柱状对比)、省级统计公报趋势折线图、知名与普通景区占比饼图、Hive 查询日志表 |
| 地图可视化 | 基于 ECharts geo 组件的全国景区分布散点图,支持缩放漫游与游客量热力映射 |
| 客流预测 | 基于线性回归 + 随机森林融合模型的景区月度客流预测,展示模型评估指标(R²、MAE)与历史同月对比 |
| 报表导出 | 支持景区基础数据、客流明细、省级统计三种 Excel 报表导出 |
| ETL/Hadoop | 管理员专属,模拟 Hadoop MapReduce 四分片批处理与 HiveQL 分析流水线,支持一键执行全部任务、查看 HDFS Reduce 结果与任务历史 |
| 系统管理 | 管理员专属,展示用户列表(含注册时间、最后登录)与系统操作日志 |
| 用户系统 | 注册、登录、角色权限(admin/user)、操作日志记录 |
数据来源
所有数据均为真实公开数据集,非 Mock 生成:
| 数据集 | 文件 | 记录数 | 说明 |
|---|---|---|---|
| 和风天气全国景区 POI | POI-Scenic-List-latest.csv | ~2600 条 | GitHub 开源,含景区名称、省/市、经纬度 |
| 马蜂窝知名 5A 景区 | tourist_attractions.csv | ~260 条 | 真实 5A 评定年份与坐标 |
| 省级旅游统计基准 | provincial_tourism_stats.base.csv | 186 行 | 大陆 31 省份 2019-2024 年度份额基准 |
| 省级旅游统计校准 | provincial_tourism_stats.csv | 204 行 | 经文旅部全国人次校准(2019=60.06亿、2024=56.15亿),含港澳台 |
数据说明:
- 景区等级:马蜂窝/关键词匹配为 5A,其余 POI 为未评级(不使用随机或 MD5 伪造)
- 景区月度客流:按校准后省级总量 + 等级/知名度权重分摊;收入 = 客流 × 门票
- 满意度:由等级/知名度/季节微调计算,与客流权重解耦
- 省级统计加总口径为省级接待人次之和,不等于全国去重出游人次
标准版目录结构
python-travel-fenxi/
├── app.py # Flask 应用主入口,路由定义与 API 接口
├── config.py # 应用配置(数据库路径、密钥、分页参数)
├── requirements.txt # Python 依赖包清单
├── data/
│ ├── POI-Scenic-List-latest.csv # 和风天气景区 POI 数据
│ ├── tourist_attractions.csv # 马蜂窝知名 5A 景区数据
│ ├── provincial_tourism_stats.base.csv # 省级统计份额基准
│ └── provincial_tourism_stats.csv # 校准后省级统计
├── database/
│ ├── db.py # SQLite 连接管理与会话工具
│ ├── schema.sql # 数据库建表脚本
│ └── tourism.db # SQLite 数据库文件(自动生成)
├── hadoop_pipeline/
│ ├── mapreduce_visitor_agg.py # MapReduce 批处理脚本(4 分片 Map → Reduce)
│ └── hdfs_data/ # 模拟 HDFS 输出目录
│ ├── _SUCCESS # 任务完成标记
│ ├── map/ # Map 阶段输出(part-m-00000~00003.json)
│ └── reduce/ # Reduce 阶段输出(part-r-00000.json)
├── hive_scripts/
│ ├── scenic_analysis.hql # HiveQL 分析脚本(5 条查询)
│ └── hive_runner.py # HiveQL 执行器(解析 HQL 并记录日志)
├── scripts/
│ ├── etl_import.py # ETL 全量导入(CSV → SQLite,含客流分摊)
│ ├── calibrate_provincial_stats.py # 省级统计校准脚本
│ └── train_visitor_model.py # 模型训练脚本(LR + RF 融合)
├── services/
│ ├── __init__.py # 服务模块导出
│ ├── auth.py # 认证与会话管理
│ └── analytics.py # 数据分析业务逻辑
├── models/
│ └── visitor_forecast.pkl # 训练完成的模型文件(自动生成)
├── static/
│ ├── css/
│ │ └── main.css # 自定义样式
│ └── js/
│ ├── app.js # 全局工具函数
│ ├── dashboard.js # 数据总览页
│ ├── scenic.js # 景区库页
│ ├── scenic_detail.js # 景区详情页
│ ├── analysis.js # 多维分析页
│ ├── map.js # 地图可视化页
│ ├── prediction.js # 客流预测页
│ ├── etl.js # ETL/Hadoop 页
│ └── admin.js # 系统管理页
├── templates/
│ ├── base.html # 基础模板(导航栏、CDN 引用)
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── dashboard.html # 数据总览页
│ ├── scenic_list.html # 景区库页
│ ├── scenic_detail.html # 景区详情页
│ ├── analysis.html # 多维分析页
│ ├── map.html # 地图可视化页
│ ├── prediction.html # 客流预测页
│ ├── reports.html # 报表导出页
│ ├── etl.html # ETL/Hadoop 页
│ └── admin.html # 系统管理页
├── tests/
│ └── test_api.py # API 集成测试
├── docs/
│ └── CODE_REVIEW.md # 代码审查报告
├── exports/ # 报表导出目录(自动生成)
├── logs/ # 日志目录
├── 运行步骤必看/
│ └── window.md # Windows 运行步骤说明
├── mac_run.sh # macOS/Linux 一键启动脚本
├── window_run.bat # Windows 一键启动脚本
├── 训练手册.md # 模型训练手册
└── README.md # 项目简介
技术栈
| 类别 | 技术 |
|---|---|
| 后端 | Python 3.12 + Flask 3.0 |
| 数据库 | SQLite 3 |
| 前端 | HTML5 + Bootstrap 5.3 + ECharts 5.5 |
| 机器学习 | scikit-learn 1.5(线性回归 + 随机森林融合) |
| 数据处理 | pandas 2.2 + numpy 1.26 |
| 模型持久化 | joblib 1.4 |
| 密码安全 | Werkzeug pbkdf2:sha256 |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 2GB 以上 |
| 磁盘 | 约 500MB(含依赖和数据库) |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
管理员拥有 ETL/Hadoop 和系统管理页面访问权限。新注册用户默认为普通用户角色。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

电商用户行为漏斗与CRO转化率优化分析
电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

多组学癌症预后预测分析系统
基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

基于 Apriori 算法的中药配伍审查系统
本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

基于 Python 的城市共享单车骑行需求时空分析系统
本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

基于 Python 的短视频用户行为分析系统
基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。