基于 Python 的民宿数据分析与价格预测系统

目录

项目概览

数据采集:从列表页到详情页的自动化采集链路

数据清洗:把"网页文本"整理成可以分析的结构化数据

指标分析:围绕城市、区域、房型和服务质量拆解民宿市场

可视化实现:单页图表与动态大屏两条路线并行

[价格预测模型:用 CatBoost 做民宿价格回归](#价格预测模型:用 CatBoost 做民宿价格回归)

后台系统:让数据不只是图表,而是可以管理的应用

项目运行与部署思路

可以继续优化的方向

每文一语


有需要本项目的代码、文档、完整资源,或者需要部署调试的朋友,可以私信博主。

项目概览

这套系统围绕"民宿房源数据"展开,核心目标不是只做几张图,而是把数据采集、清洗处理、数据库存储、指标分析、可视化大屏和价格预测模型串成一条完整链路。项目资料里既有爬虫脚本,也有数据预处理 notebook、SQL 脚本、Pyecharts 单页图表、ECharts 大屏、Flask 后台系统以及已经训练好的 CatBoost 模型文件。

从实现思路上看,我先通过自动化爬虫采集民宿平台上的房源信息,再对价格、好评率、近期预订、面积、床位、可住人数、区域地址等字段进行标准化处理。清洗后的数据进入 MySQL 和分析结果表,前端再通过单页图表、大屏页面和后台管理页面进行展示;价格预测部分则用 CatBoostRegressor 建模,让系统不仅能展示现状,也能给出民宿价格的参考预测。

图 1 系统整体流程与模块关系

数据采集:从列表页到详情页的自动化采集链路

项目里的"最新爬虫.py"是数据入口。爬虫采用 Selenium 模拟浏览器访问民宿平台,先从城市列表页定位房源,再进入详情页解析字段。详情页字段比较丰富,包括房源名称、价格、地址、好评率、近期预订、房东名称、评价数量、房源介绍、综合评分、卫生状况、服务态度、图片吻合、设施装潢、房源类型、户型、出租类型、床型、总床数、可住人数、独立卫生间、面积、发票和城市等。

为了让采集结果更稳定,脚本中保留了页面加载等待、滚动触发懒加载、链接批量提取和异常容错等逻辑。实际写文章或展示项目时,没有必要把完整爬虫参数全部公开,只需要说明采集流程和字段覆盖范围即可。涉及 Cookie、浏览器路径、账号登录状态等内容,我已经在展示图里做了脱敏处理。

数据清洗:把"网页文本"整理成可以分析的结构化数据

民宿数据最麻烦的地方在于字段看起来直观,但机器不能直接分析。例如价格字段常见格式是"¥1860-每晚",好评率带有百分号,近期预订带有"晚",面积带有"平米",床数和人数也会混入中文单位。如果这些内容不做处理,后面的 SQL 分组、图表统计和模型训练都会受到影响。

数据预处理部分主要完成了多批次 CSV 合并、重复检查、字段清洗、特殊字符过滤、单位转换、地址拆分和异常价格处理。清洗后的数据文件保留了约 2.2 万条房源记录,字段增加到 25 个,覆盖 43 个城市。为了避免公开过多真实房源细节,展示图中的房源名称、房东名称和详细地址没有直接展开,只展示城市、区域、价格、好评率、预订量、房源类型、户型等分析必要字段。

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| | |
| 图 4 数据清洗与特征整理流程 | 图 5 清洗后房源数据样例 |

指标分析:围绕城市、区域、房型和服务质量拆解民宿市场

在分析层面,我把数据拆成几个比较适合展示的主题。第一类是价格主题,包括不同城市平均价格、不同区域平均价格、不同出租类型平均价格、不同房源类型平均价格、不同床型与床位数量对应的价格变化。第二类是房源结构主题,包括房源类型占比、出租类型占比、户型占比、床型占比等。第三类是服务质量主题,包括不同城市的综合评分、卫生状况、服务态度、图片吻合和设施装潢等。

这些指标不是临时在页面中计算,而是通过 SQL 结果表进行沉淀。例如 avg_price_by_city、avg_price_by_dist_addr、prop_type_count、rent_type_count、avg_comp_sc_by_city 等表,都服务于后续图表展示。这样做的好处是页面调用更快,逻辑也更清楚:原始数据负责保留事实,清洗数据负责统一口径,指标表负责支撑展示。

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| | |
| 图 6 热门城市民宿平均价格 | 图 7 房源类型分布 |

图 8 面积区间与平均价格关系

可视化实现:单页图表与动态大屏两条路线并行

项目中保留了两种可视化方式。第一种是 Pyecharts 单页图表,适合逐个查看分析结果,例如城市均价柱状图、房源类型饼图、出租类型占比图、城市评分趋势图等。Pyecharts 生成的 HTML 页面可以单独打开,也可以后续嵌入到系统页面里。

第二种是基于 Flask、ECharts 和前端页面的大屏展示。大屏页面按数据卡片、价格结构、城市画像、出租类型、房源明细、热力图、服务质量雷达等模块组织,风格更适合项目答辩、作品展示和资源宣传。相较于单张图,大屏能把多个指标放到同一个视野里,读者一眼就能看到系统的完整度。

图 9 民宿数据多维度分析大屏展示

价格预测模型:用 CatBoost 做民宿价格回归

价格预测部分是这个项目更有技术含量的一块。模型没有把房源名称、房东名称、详细地址这类容易造成噪声和隐私风险的字段直接作为核心输入,而是选择了好评率、近期预订、评价数量、综合评分、卫生状况、服务态度、图片吻合、设施装潢、房源类型、户型、出租类型、床型、总床数、可住人数、独立卫生间、面积和区域地址等字段。

建模前先对价格进行异常值处理,减少极端高价房源对模型的影响。随后采用 CatBoostRegressor 训练回归模型,并自动处理房源类型、户型、出租类型、床型和区域地址等类别特征。项目中保存了 model.pkl 和 model.csv,后续可以接入 Flask 接口,实现用户输入房源特征后自动返回预测价格。

从已有实验结果看,测试集 R² 约为 0.706,MAE 约为 74.5 元,RMSE 约为 110.2 元。这个效果对于民宿价格这种受城市、地段、节假日、装修、图片质量、平台流量等多因素影响的场景来说,已经具备展示和原型应用价值。特征重要性也比较符合业务直觉:区域地址、面积、近期预订、户型、房源类型等变量对价格影响更明显。

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| | |
| 图 10 CatBoost 价格预测效果 | 图 11 CatBoost 特征重要性分析 |

后台系统:让数据不只是图表,而是可以管理的应用

除了分析和预测,项目还包含一个后台管理系统。系统文件中可以看到 login.html、main.html、metadata_list.html、cleandata_list.html、user_management.html 等页面,也有 MysqlHelper.py、flask_run.py、SQL 脚本和前端资源。整体功能围绕登录、首页、原始数据管理、清洗数据管理、用户管理、数据查询、数据编辑和可视化入口展开。

这种集成方式比单独提交 notebook 更完整。对于项目展示来说,后台管理页面能证明数据已经进入系统流程,而不是停留在本地表格和静态图片里。后续如果继续优化,可以把模型预测接口、自动更新爬虫任务、数据质量监控和权限分级进一步整合进去。

图 12 后台管理系统功能界面组合示意

项目运行与部署思路

实际部署时,可以先导入 SQL 脚本,创建 product、ms_data 以及各类分析结果表;再安装 Python 依赖,包括 pandas、numpy、mysql-connector、pyecharts、catboost、scikit-learn、joblib 等;随后根据本地 MySQL 配置修改数据库连接信息,启动 Flask 后台或大屏服务。

如果只是做展示,可以优先运行清洗后的 CSV 和模型文件,不必重新执行爬虫。爬虫部分适合在需要更新数据时运行;可视化页面适合答辩演示;预测模型适合展示算法能力;后台管理系统则适合说明项目具备应用化雏形。

可以继续优化的方向

如果后续继续升级,我会把重点放在四个方向。第一是爬虫调度,把城市和页码采集任务做成可配置任务,支持断点续采和定时更新。第二是模型增强,引入节假日、商圈距离、图片数量、评论文本情感、地铁距离等特征,让价格预测更贴近真实市场。第三是系统部署,把 Flask 项目改造成更清晰的前后端接口,并支持 Docker 一键部署。第四是展示体验,进一步强化大屏交互和地图联动,让城市、区域、房型、价格之间的关系更直观。

整体来看,这个项目覆盖了数据采集、数据清洗、数据分析、可视化展示、机器学习建模和后台系统集成几个关键环节。它不只是一个"民宿价格预测模型",更像是一个围绕民宿数据构建起来的数据分析应用原型,适合作为课程设计、毕业设计、项目展示或二次开发资源。

每文一语

把复杂的数据清洗干净,把普通的图表做成系统,把一次练习做成作品,机会就会越来越近。