基于武汉市的二手房屋销售数据分析与可视化系统

目录

一、项目背景:从房源数据到可视化系统

二、数据采集:先把真实市场数据拿下来

三、数据清洗:把杂乱字段整理成可分析结构

四、多维分析:把二手房市场拆成多个观察角度

五、可视化大屏:把核心指标集中到一个页面

[六、CatBoost 房价预测:让系统具备智能估价能力](#六、CatBoost 房价预测:让系统具备智能估价能力)

[七、Web 系统实现:用户端、管理员端和预测端联动](#七、Web 系统实现:用户端、管理员端和预测端联动)

八、项目亮点与可扩展方向


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

一、项目背景

武汉二手房市场的数据量很大,单纯靠人工浏览平台页面,很难真正看清区域价格、户型结构、楼层条件和交易状态之间的关系。最初做这个系统时,我并不只是想做几张统计图,而是希望把"数据采集、数据清洗、可视化分析、房价预测、后台管理"串成一条完整链路。这样一来,房源信息不再停留在网页列表里,而是可以进入数据库、进入模型、进入大屏,最终变成可查询、可分析、可预测的系统功能。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 1 数据来源与房源列表展示 | 图 2 数据采集运行过程展示 |

项目整体围绕武汉市二手房销售数据展开,数据覆盖多个行政区域,字段包含成交价格、建筑面积、户型结构、装修情况、楼层信息、产权所属、抵押状态等内容。开发过程中,我更关注系统的落地性:前端要能直接展示分析结果,后台要能维护数据,预测模块要能接收用户输入并返回估价结果,管理员还要能对用户和房源信息进行管理。

技术选型上,后端使用 Django 搭建 Web 服务,数据库采用 MySQL 存储结构化房源数据,数据处理主要依赖 pandas,图表展示使用 ECharts 与 Pyecharts,预测模型采用 CatBoost 回归算法。整个系统属于典型的 B/S 架构,浏览器端负责交互展示,Django 负责业务逻辑与接口响应,MySQL 负责数据持久化,模型文件则作为智能预测能力嵌入到系统流程中。

相比只在 notebook 里完成一次性分析,这种系统化实现更适合展示完整开发能力。数据可以重复进入系统,图表可以通过接口实时更新,预测模型也能被页面直接调用。后期要换数据源、换模型或增加新的图表模块,只需要沿着已有接口和数据库结构继续扩展,不需要推倒重来。

二、数据采集

项目的第一步是数据采集。房源数据来自公开房产交易页面,采集策略采用"列表页 + 详情页"的两层流程:先按区域进入房源列表,提取详情页链接,再逐条进入详情页获取完整字段。这样比只抓列表页更稳定,也能拿到更多结构化信息。采集范围覆盖武汉多个主要区域,每个区域按分页逐步采集,最终形成了三万余条可用于分析和建模的样本。

爬虫部分没有追求短时间高频抓取,而是重点解决稳定性。实际采集时,页面会触发人机验证或短暂拦截,因此程序中加入了随机等待、指数退避重试和异常提醒机制。访问列表页与详情页之间设置不同的等待区间,区域切换时也加入额外延迟,尽量模拟正常浏览节奏。这个处理虽然会降低采集速度,但可以减少中断,提高完整采集成功率。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 3 重复值与缺失值检查 | 图 4 楼层与建筑面积字段处理 |

采集字段并不是越多越好,关键是后续是否能参与分析。项目保留了小区名称、成交价格、建筑面积、套内面积、房屋户型、楼层、建筑类型、房屋朝向、装修情况、梯户比例、电梯、挂牌时间、产权所属、抵押信息、房本备件、行政区域等核心字段。这些字段既能支撑统计可视化,也能为房价预测提供输入变量。

三、数据清洗

原始房源数据直接进入系统会带来很多问题。比如建筑面积字段混有单位,楼层字段同时包含楼层位置和总楼层数,梯户比例使用中文数字表达,抵押信息里又包含金额、责任方和文字说明。为了让这些字段能被数据库和模型稳定读取,我对数据做了统一清洗、拆分和衍生。

清洗时先处理重复值和缺失值,再针对关键字段做标准化。建筑面积、套内面积等字段提取纯数值;楼层信息拆出"所在楼层"和"楼总高";梯户比例转成"电梯数"和"单层总户数";户型字段提取室、厅、卫信息后生成总房间数;抵押信息中提取抵押金额,并把还款责任归为更清晰的类别。字段名也统一转换为英文,方便后续数据库建表和程序调用。

数据存储选择 MySQL,是因为后面不仅要展示图表,还要支持查询、分页、编辑、删除和模型调用。相比 CSV 文件,数据库更适合 Web 系统长时间运行,也便于通过 SQL 做条件筛选和分组聚合。清洗后的数据进入 MySQL 后,Django 后端就可以直接按接口读取数据,再把结果交给前端图表渲染。

图 5 房源数据入库与字段管理展示

四、多维分析

数据进入数据库后,系统围绕房屋属性、产权交易、居住条件和价格影响因素做了多维分析。房屋属性部分主要查看建筑类型、户型结构、房屋用途、房屋年限等分布情况。结果显示,市场主流仍然集中在普通住宅和平层户型,板楼、板塔结合等常见结构占比较高,这也符合武汉二手房市场以刚需和改善型住宅为主体的特征。

产权与交易状态部分主要关注产权所属、抵押信息和房本备件。通过图表可以看到,大多数房源交易状态相对清晰,无抵押或已上传房本的房源占比较高,这类信息对购房决策很重要。居住条件部分则进一步分析楼层、楼栋总高、装修、电梯、朝向等因素和价格之间的关系。例如带电梯房源整体价格表现更稳定,南向和南北向房源在市场中更受欢迎。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 6 建筑类型分布统计 | 图 7 户型结构分布统计 |

价格分析部分没有只看一个均价,而是把建筑类型、户型结构、房屋用途、房间数等因素分别展开。不同维度之间会出现一些有意思的现象:有些小众户型均价较高,但样本量并不大;有些装修类别价格异常,背后可能受到地段或高端房源影响;房间数增加也不一定线性提高单价,仍需要结合区域、用途和房源品质综合判断。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 8 不同楼层成交价格对比 | 图 9 房屋朝向价格统计 |

为了增强展示效果,项目还加入了小区名称词云。词云中高频出现的词,如花园、小区、国际、万科、武昌、东湖等,能够从另一个角度体现热门居住板块和成熟社区的集中程度。这类图虽然不是严格的模型结果,但很适合做市场展示和趋势观察。

图 10 小区名称词云展示

五、可视化大屏

除了普通图表页面,系统还做了一个深色风格的数据大屏。大屏的设计思路是把核心指标、趋势变化、地区画像、价格分布、明细数据、热力图和特征关联放在同一个页面内。顶部是数字卡片,展示样本总量、平均成交价、最高成交价和抵押房源数量;左侧展示成交价格趋势、地区多指标画像和成交价格区间;中间展示数据明细、地区户型热力图和面积价格散点;右侧展示户型 Top、特征关联和产权结构。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 11 核心指标数字卡片展示 | 图 12 成交价格趋势分析 |

大屏后端由 Django 提供多个 JSON 接口,每个接口负责一个图表或指标模块。前端使用 ECharts 渲染图表,并通过 CSS Grid 完成三栏式布局。为了避免页面加载过慢,部分图表采用抽样、聚合或 TopN 方式处理数据。例如面积与价格散点图不直接渲染全量点,而是按规则抽样,同时用分段均值线展示整体走势。这样既能保留趋势,又能保证页面流畅。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 13 地区维度画像展示 | 图 14 成交价格区间分布 |

图表之间的内容并不是简单堆叠,而是形成互补关系。趋势图看时间变化,地区画像看区域差异,价格区间看市场价格带,热力图看地区与户型的组合关系,散点图看面积与总价的相关性。用户打开大屏后,可以很快判断市场主流价格集中在哪些区间,哪些地区房价更高,哪些户型或装修条件更容易形成溢价。

图 15 可视化大屏整体效果

六、CatBoost 房价预测

在完成统计分析后,我把房价预测作为系统的智能化模块。房价预测不是单纯做一个离线模型,而是要能和 Web 页面联动:用户填写房源特征,后端加载训练好的模型,按固定特征顺序组装输入,再返回预测价格。这样系统从"看数据"进一步变成"用数据"。

模型部分选择 CatBoost,是因为房屋数据里有大量类别型字段,例如区域、建筑类型、户型结构、装修情况、产权所属等。CatBoost 对这类字段更友好,能够减少复杂编码带来的维度膨胀问题,也适合处理非线性关系。建模前先筛掉明显无效或噪声较强的字段,并剔除极端成交价格样本,保留对成交价格有解释价值的特征。

训练完成后,模型在测试集上取得了较好的拟合效果,R²约为 0.85,平均误差控制在可接受范围内。真实值与预测值散点图中,大多数样本点沿对角线附近分布;折线对比图中,预测走势和真实走势基本同步;特征重要性图则进一步说明建筑类型、装修情况、楼层结构等因素对价格有明显影响。这个模块不追求替代专业估价,而是作为辅助判断工具,为用户提供一个基于历史数据的参考区间。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 16 真实值与预测值散点对比 | 图 17 预测结果走势对比 |

图 18 特征重要性排序展示

七、Web 系统实现

系统前端采用较清晰的后台管理风格,普通用户和管理员拥有不同入口。用户登录后可以查看可视化图表、打开大屏、使用房价预测功能,也可以进入个人中心维护基础信息。页面采用左侧菜单加右侧内容区的布局,点击菜单时动态切换内容,不需要频繁跳转,浏览体验比较顺畅。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 19 系统登录界面展示 | 图 20 用户端可视化功能入口 |

管理员端主要负责系统运维和数据维护。后台首页可以查看数据总量、用户活跃情况和最近变化趋势;房源数据管理页面支持按小区名称、地区、房屋朝向等条件查询,也支持新增、编辑和删除记录。数据表格采用分页展示,避免一次性加载过多数据;增删改操作都通过后端接口完成,并在数据库层面保持数据同步。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 21 管理员房源数据维护界面 | 图 22 用户管理信息脱敏展示 |

用户管理模块用于维护注册用户信息,涉及账号、联系方式等内容的展示截图已经做了脱敏处理。管理员可以查看用户列表、编辑用户资料、删除无效账号,也可以把普通用户升级为管理员。权限设计把普通浏览功能和后台维护功能分开,减少误操作,也更符合实际系统部署需求。

房价预测页面采用表单化设计,数值字段用输入框,类别字段使用下拉选择或固定选项。用户填写建筑面积、套内面积、总房间数、房屋用途、地区、建筑类型、装修情况、产权所属等信息后,点击预测按钮即可获得估价结果。前端会先做必填校验,后端再做格式校验和特征组装,避免因为空值、非法值或字段顺序错误导致模型推理失败。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| 图 23 房价预测输入页面 | 图 24 预测结果展示 |

在交互细节上,系统尽量把常用操作做得直接一些。图表入口放在左侧菜单,管理员操作按钮放在表格右侧,新增和编辑都采用弹窗表单,预测结果在当前页面即时显示。这样普通用户可以重点看图和估价,管理员可以重点维护数据,两类角色各自的操作路径比较清晰。

八、项目亮点与可扩展方向

这套系统比较完整的一点,是把房源数据从采集到应用的链路打通了。前面有爬虫采集和数据清洗,中间有 MySQL 存储和多维统计,后面有 Django 页面、大屏展示和 CatBoost 预测。单独看每个环节并不复杂,但把这些环节稳定组合起来,就能形成一个可演示、可运行、可继续扩展的完整项目。

后续如果继续优化,可以从三个方向推进。第一是数据层面,加入更多时间维度和区域维度信息,比如地铁距离、学校资源、商圈成熟度、政策节点等,让分析更接近真实购房场景。第二是模型层面,可以对比 LightGBM、XGBoost、随机森林等模型,加入交叉验证和自动调参,提高预测稳定性。第三是系统层面,可以增加用户收藏、历史预测记录、图表导出、区域对比报告等功能,让系统更像一个面向真实业务的数据产品。

对我来说,这个项目的价值不只在于完成了一个 Django 系统,更在于把数据分析、机器学习和 Web 开发放到同一个应用场景里。它既能展示数据采集和处理能力,也能展示可视化设计、模型训练、接口开发和后台管理能力,适合作为数据分析类、机器学习应用类和 Web 可视化类项目进行展示。

完整资源中可以进一步整理运行说明、数据库脚本、模型文件、页面截图和部署步骤。实际部署时,只需要完成 Python 环境、MySQL 数据库、依赖包安装、模型路径配置和 Django 启动配置,就可以把项目跑起来。后续如果用于答辩、课程设计、作品集展示或二次开发,也能根据不同场景裁剪成偏数据分析、偏预测建模或偏系统开发的版本。

每文一语:

把复杂数据整理成清晰系统,每一步认真打磨,都会离更好的作品更近一点。

相关推荐
亿牛云爬虫专家1 年前
Kafka与Flink打造流式数据采集方案:以二手房信息为例
flink·kafka·数据采集·爬虫代理·数据处理·二手房·定时抓取
铃之2 年前
kaggle房价预测
深度学习·李沐·房价预测
王小王-1232 年前
基于Python的二手房价格分析与多种机器学习房价预测
python·机器学习·数据分析·二手房·房价预测