项目简介
本项目以链家公开的上海租房数据(house_rent.csv,约 41 万条)与售房数据
(house_sell.csv,约 32 万条)为数据源,围绕「影响房价的因素是什么」这一问题展开。
在数据清洗与小区聚合的基础上,构建可比较的标准化指标,并通过直方图、箱线图与
QGIS 空间可视化,观察房价、租金与售租比在上海市域范围内的分布规律。
📊 数据驱动
真实公开数据集,覆盖房源标题、小区、地址、行政区、价格、面积、经纬度等完整字段。
🧮 指标构建
以「小区」为分析单元,构建每平米月租金、每平米房价与售租比三大可比指标。
🗺️ 空间视角
结合经纬度与 QGIS 地理数据,将价格分布映射到空间,揭示区位对房价的影响。
核心指标定义
售租比是衡量「买房 vs 租房」经济性的关键指标:数值越大,说明房价相对于租金越贵, 买房的投资回收期越长;反之则租房成本相对偏高、买房更划算。结合行政区维度对比, 可以直观看出哪些区域存在明显的价格偏离。
分析流程
数据加载与清洗
读取 GBK 编码原始 CSV,删除价格 / 面积 / 经纬度缺失或非正的记录,保证样本有效。
小区指标汇总
以小区为粒度取均值,合并租售数据,计算每平米月租金、每平米房价与售租比。
分布与对比分析
直方图观察指标整体分布,按行政区箱线图对比区域差异,截断极端值仅用于绘图展示。
空间分布可视化
基于经纬度绘制上海地图散点,结合 QGIS 行政区 / 道路 / 人口数据做地理叠加分析。
# 核心计算逻辑(streamlit_app.py 摘要)
rent["rent_area"] = rent["price"] / rent["area"] # 每平米月租金
data = pd.merge(d_rent, d_sell, on="community") # 小区级合并
data["sell_rent_ratio"] = data["average_price"] / data["rent_area"] # 售租比
空间分布可视化
以下三张图分别展示上海市域范围内房价、租金与售租比的空间分布。 颜色由蓝到红代表数值由低到高,可以直观看到核心城区与外围区域的梯度差异。
房价空间分布
每平米房价的空间梯度,高值集中于中心城区及优质板块。
租金空间分布
每平米月租金的分布情况,反映居住需求与租赁市场的空间格局。
售租比空间分布
房价相对租金的偏离程度,识别估值偏高或偏低区域。
交互式分析应用
项目内置一个 Streamlit 交互式分析应用,无需修改代码即可完成以下探索:
📊 数据概览
查看租售数据规模、字段结构、清洗规则与数据样例。
🏘️ 小区指标
按售租比 / 租金 / 房价排序查看小区 Top N,支持模糊搜索。
📈 分布 + 🗺️ 地图
直方图、区域箱线图与交互地图联动,多角度观察分布规律。
# 启动交互式应用(需与数据文件位于同一目录)
streamlit run streamlit_app.py
项目结构
| 文件 / 目录 | 说明 |
|---|---|
house_rent.csv | 上海租房数据(约 41 万条),字段含 title / community / district / price / area / lng / lat |
house_sell.csv | 上海售房数据(约 32 万条),字段含 property_name / district / total_price / area / average_price / lng / lat |
房价影响因素挖掘.ipynb | 完整分析流程:数据清洗、指标构建、分布分析与空间可视化 |
streamlit_app.py | Streamlit 交互式分析应用(数据概览 / 小区指标 / 分布分析 / 空间地图) |
qgis数据/ | QGIS 空间分析中间数据(行政区划、道路、人口、市中心等 shapefile) |
p01 ~ p03 *.png | 房价 / 租金 / 售租比空间分布图输出 |
index.html | 本项目展示主页(当前页面) |
数据源与依赖
🏷️ 数据来源
链家上海租房 / 售房公开数据(2018 年采集快照)。原始文件为 GBK 编码,读取时需兼容少量脏字节。
公开数据集🐍 核心依赖
Python 3 · pandas / numpy / matplotlib / streamlit;空间分析辅助 QGIS。
pip 安装📐 数据标准化
行 = 小区(社区),列 = 核心指标(每平米月租金 / 每平米房价 / 售租比),单位统一为元。
标准口径