数据分析项目——北京二手房价数据分析

  • 第一步:项目设计和获取数据(获取实验的数据集!!)
  • 第二步:数据读取和数据预处理
  • 第三步:数据的可视化分析
  • 第四步:构建房价评估模型(决策树、随机森林等)

整个项目的代码和数据集获取:
https://github.com/Proberen/Data-analysis___Beijing__Houseprice

文章目录

  • 1 区域因素
    • 1.1 各区域内二手房的分布情况
    • 1.2 各区域内二手房的单价情况
    • 1.3 各区域内二手房的总价情况
  • 2 小区因素
    • 2.1 小区房源数量分布
    • 2.2 小区总房价对比
  • 3 面积因素
    • 3.1 各个面积区间内房屋的数量
    • 3.2 面积与房屋总价的关系
  • 4 户型因素
    • 4.1 户型统计
    • 4.2 户型与总价的关系
  • 5 热度、观看人数因素
    • 5.1 热度因素
    • 5.2 观看人数因素
  • 6 发布时间因素
    • 6.1 不同发布时间的房屋数量
    • 6.2 不同发布时间的房屋总价

由于图表分析无法更加直观的分析各个因素与房屋价格的关系,因此在进行数据的预处理后对数据进行可视化的分析,分析因素包括区域因素、小区因素、面积因素、户型因素、热度因素、观看人数因素、发布时间因素等。

1 区域因素

1.1 各区域内二手房的分布情况

在本数据集中共包含北京市17个区域,包括昌平区、海淀区、丰台区、朝阳区、燕郊区、大兴区、通州区、西城区、顺义区、东城区、房山区、石景山区、亦庄开发区、门头沟区、密云区、延庆区、怀柔区。

绘制柱状图:

# 获取各个区域的二手房数量(已排序)
x = data['Dist'].value_counts().index.tolist()
y = data['Dist'].value_counts().tolist()
# 绘制柱状图
bar = (Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add_xaxis(x).add_yaxis("数量", y).set_global_opts(title_opts=opts.TitleOpts(title="北京市二手房的区域分布情况"),yaxis_opts=opts.AxisOpts(name="二手房数量(单位:套)"),xaxis_opts=opts.AxisOpts(name="区域",axislabel_opts={"rotate":45}))
)
bar.render_notebook()

1.2 各区域内二手房的单价情况

获取北京市二手房各个区域的所有房源信息,将各个区域内的二手房的单价求和去平均值获取到各个区域的平均房价,绘制柱状图。

# 构建一个dataframe
x = data['Dist'].unique()
y = np.arange(len(x))for i in range(len(x)):price = data[data['Dist']==x[i]]['Price'].mean()y[i]=priceprice = pd.DataFrame({'区域': x,'价格 (元/平米)': y})
# 绘制按地区分平均每平米的价格的柱状图
plt.figure(figsize=(20,10))bar = (Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add_xaxis(x.tolist()).add_yaxis("价格", y.tolist()).set_global_opts(title_opts=opts.TitleOpts(title="北京市二手房各个地区的平均房价对比"),yaxis_opts=opts.AxisOpts(name="二手房价格(单位:元)"),xaxis_opts=opts.AxisOpts(name="区域",axislabel_opts={"rotate":45}))
)
bar.render_notebook()


为了能够更直观的表现出每个区域内房价的差距,绘制地理热力图如图所示:

# 绘制各个城区房屋总价的热力图# 处理区域的名字
price['区域']=price['区域']+'区'city = (Map(init_opts=opts.InitOpts(width = '1200px', height='700px')).add("",price.values,"北京").set_global_opts(title_opts=opts.TitleOpts(title="北京市平均房价图"),visualmap_opts=opts.VisualMapOpts(min_=100,max_=200,is_piecewise=True,pieces=[{"min": 100000, "label": '>100000元/平米', "color": "#0000CD"},{"min": 80000, "max": 100000, "label": '80000-100000元/平米', "color": "#1E90FF"},{"min": 60000, "max": 80000, "label": '60000-80000元/平米', "color": "#1C86EE"},{"min": 40000, "max": 60000, "label": '40000-60000元/平米', "color": "#1874CD"},{"min": 0, "max": 40000, "label": '<40000元/平米', "color": "#63B8FF"}],range_text=['高', '低']))
)
city.render_notebook()


通过观察上述柱状图和热力图,可以发现北京市外围区域的平均房价普遍低于4万元每平米,同时可以观察到越接近北京市市中心房价越高,其中房价最高的地区为西城区和东城区,分别为103131元/平米和94046元/平米。

1.3 各区域内二手房的总价情况

# 绘制各个城区房屋总价的箱线图
plt.figure(figsize = (20, 10))
sns.boxplot(x='Dist',y='TotalPrice',data=data)
plt.xlabel('区域', fontsize=20)
plt.ylabel('二手房总价', fontsize=20)
plt.title('北京市各区域二手房总价',size=20)
plt.show()


通过对北京市各区域内总房价和平均房价的分析,可以得出以下结论:越靠近北京市中心周围的二手房价格越高,同时每个区都存在很多的离群点,这符合北京市房价的现状,可以预见靠近市中心的二手房价格会越高。

2 小区因素

2.1 小区房源数量分布

通过统计,发现该组数据中二手房房源共分布在4308个小区内,其中福成上上城五期和福城上上城三季的房源数量最多,分别为158套和115套。

quarter = data['Quarters'].value_counts().to_frame().reset_index()

2.2 小区总房价对比

在对小区房源数量的统计后,对小区所有房源的总价求和取平均值进行统计如下表所示。经过排序可以发现东山墅和优山美地B区的总房价最高,都为8000万元

quarters = data['Quarters'].unique()
price = np.arange(len(quarters))for i in range(len(quarters)):p = data[data['Quarters']==quarters[i]]['TotalPrice'].mean()price[i]=pxiaoqu = pd.DataFrame({'小区': quarters,'价格(万元)': price})# 按照价格排序
xiaoqu = xiaoqu.sort_values(by="价格(万元)",ascending=False)

# 获取房价前五名的总房价
q5 = xiaoqu.head(5)
x = q5['小区']
y = q5['价格(万元)']bar = (Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add_xaxis(x.tolist()).add_yaxis("价格", y.tolist()).set_global_opts(title_opts=opts.TitleOpts(title="北京市小区平均房价前五名"),yaxis_opts=opts.AxisOpts(name="房价"),xaxis_opts=opts.AxisOpts(name="小区名称"))
)
bar.render_notebook()

3 面积因素

3.1 各个面积区间内房屋的数量

将北京市二手房的面积划分为<50、50-100、100-150、150-200、200-250、>250六个区间

area = data['Area']
HouseType = data['HouseType']
price = data['TotalPrice']
dist = data['Dist']
Longitude = data['Longitude']
Latitude = data['Latitude'] ap = pd.DataFrame({'面积': area,'房型':HouseType,'区域':dist,'价格':price})

绘制的北京市二手房面积数量统计柱状图

x1 = ['<50','50-100','100-150','150-200','200-250','>250']
y1 = np.zeros(6)for i in range(len(area)):if area[i] <=50:y1[0] += 1continueif area[i] <=100:y1[1] += 1continueif area[i] <=150:y1[2] += 1continueif area[i] <=200:y1[3] += 1continueif area[i] <=250:y1[4] += 1continueif area[i] >250:y1[5] += 1bar = (Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add_xaxis(x1).add_yaxis("数量", y1.tolist()).set_global_opts(title_opts=opts.TitleOpts(title="北京市二手房面积/数量统计"),yaxis_opts=opts.AxisOpts(name="数量"),xaxis_opts=opts.AxisOpts(name="面积区间"))
)
bar.render_notebook()

3.2 面积与房屋总价的关系

plt.figure(figsize=(20,10))
rng = np.random.RandomState(0)
colors = rng.rand(22152)
plt.scatter(area, price,c=colors,alpha = 0.9)
plt.colorbar()
plt.title('北京二手房的面积分布')
plt.xlabel('面积')
plt.ylabel('价格')
plt.show()

4 户型因素

4.1 户型统计

HouseType.value_counts().to_frame().reset_index()

绘制北京市二手房各个房型的数量柱状图

HouseNum = HouseType.value_counts().to_frame().reset_index()
plt.figure(figsize=(20,10))
sns.barplot(y='index',x='HouseType',data=HouseNum)
plt.title('北京市二手房各房型数量',size=30)
plt.ylabel('房型',size=20)
plt.xlabel('数量',size=20)
plt.show()

4.2 户型与总价的关系

在对各个户型的房屋数量进行统计后,对户型和房屋总价进行统计,绘制柱状图如下图所示。其中15室3厅的总价最高,1室0厅等房型的总价偏低。

# 获取数据
HousePrice = data.groupby(['HouseType'])['TotalPrice'].mean().to_frame().reset_index()
plt.figure(figsize=(50,20))
sns.barplot(x='HouseType',y='TotalPrice',data=HousePrice)
plt.title('北京市二手房各房型总价',size=30)
plt.xlabel('房型',size=20)
plt.ylabel('单价(单位:万元)',size=20)
plt.show()

5 热度、观看人数因素

5.1 热度因素

plt.figure(figsize=(20,10))
rng = np.random.RandomState(0)
colors = rng.rand(22152)
plt.scatter(data.PeopleNumber, data.TotalPrice,c=colors,alpha = 0.9)
plt.colorbar()
plt.title('北京二手房的热度与房价的关系',size=20)
plt.xlabel('关注人数(单位:人)',size=20)
plt.ylabel('价格(单位:万元)',size=20)
plt.show()

数据集中记录了在网站中房源关注的人数,经过统计热度与总房价的关系如下图所示,可以发现房价越低的房源热度越高。

5.2 观看人数因素

plt.figure(figsize=(20,10))
rng = np.random.RandomState(0)
colors = rng.rand(22152)
plt.scatter(data.WatchNumber, data.TotalPrice,c=colors,alpha = 0.9)
plt.colorbar()
plt.title('北京二手房的看房人数与房价的关系',size=20)
plt.xlabel('看房人数(单位:人)',size=20)
plt.ylabel('价格(单位:万元)',size=20)
plt.show()

数据集中记录了在网站中房源线下看房的人数,经过统计观看人数与总房价的关系如下图所示,可以发现房价越低的房源看房人数越多。

6 发布时间因素

6.1 不同发布时间的房屋数量

通过不同发布时间房屋数量的统计,绘制北京市二手房不同发布时间的房屋数量柱状图,发现其中发布30天左右的房屋数量较多。

Time = data['ReleaseTime'].value_counts().to_frame().reset_index()
plt.figure(figsize=(20,10))
sns.barplot(x='index',y='ReleaseTime',data=Time)
plt.title('北京市二手房不同发布时间的房屋数量',size=20)
plt.ylabel('数量',size=20)
plt.xlabel('发布时间',size=20)
plt.show()

6.2 不同发布时间的房屋总价

plt.figure(figsize=(20,10))
sns.barplot(x='ReleaseTime',y='TotalPrice',data=data)
plt.title('北京市二手房不同发布时间的房屋总价',size=20)
plt.show()

通过绘制北京市二手房不同发布时间的房屋总价柱状图,可以发现发布时间越长的二手房房价越高,特别是一年左右发布的房源房价都偏高,因此该因素可以作为分析房价的重要因素。

基于北京二手房价数据的探索性数据分析和房价评估——数据的可视化分析相关推荐

  1. 基于北京二手房价数据的探索性数据分析和房价评估——项目设计和数据的获取

    数据分析项目--北京二手房价数据分析 第一步:项目设计和获取数据(获取实验的数据集!!) 第二步:数据读取和数据预处理 第三步:数据的可视化分析 第四步:构建房价评估模型(决策树.随机森林等) 整个项 ...

  2. 往期直播:《驴妈妈,基于混合云的OTA行业数据分析、精准运营和大数据用户推荐》...

    最新活动报名: 3月16日直播<空格技术架构云上实践与经验>:https://yq.aliyun.com/webinar/join/4 3月18日直播<爆款App小咖秀产品服务端架构 ...

  3. 会玩这18个免费的探索性数据分析工具,你才是数据分析家!

    每个人都有各自的天赋,发现它们并开始相信我们自己只是时间的问题.我们都有局限,但是我们应该止步不前吗?答案是不. 当我开始用R编程的时候,我很纠结.有时候不止一个人曾经这么想过.因为我在这一生中从未编 ...

  4. 九、探索性数据分析的应用

    1.探索性数据分析概述 探索性数据分析主要包括以下方面的内容: 探索性数据分析的概念 探索性数据分析的目的 探索性数据分析的常见工具 探索变量关系及其可视化 2 探索性数据分析的概念 1977年Joh ...

  5. 熊猫烧香分析报告_熊猫分析进行最佳探索性数据分析

    熊猫烧香分析报告 目录 (Table of Contents) Introduction介绍 Overview总览 Variables变数 Interactions互动互动 Correlations相 ...

  6. 探索性数据分析(EDA):Python

    什么是探索性数据分析(EDA)? (What is Exploratory Data Analysis(EDA)?) If we want to explain EDA in simple terms ...

  7. 探索性数据分析:银行信贷数据集

    作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘.社交网络分析和机器学习等.希望与大家分享学习经验,推广并加深R语言在业界的应用. 邮箱:huang.tian-yuan@qq.com 前言 本文为 ...

  8. Python探索性数据分析——异常数据的检测与处理、数据的描述(集中、分散、分布、相关关系、波动)、数据的推断(正态性检验、卡方检验、t检验)

    目录 一.异常数据的检测与处理 1.异常数据检测与处理-基于箱线图 2.异常数据检测与处理-基于正态分布特征 二.数据的描述 1.数据的集中趋势 1.1.数据的集中趋势-平均值 1.1.1.算数平均值 ...

  9. 数据探索性分析_探索性数据分析

    数据探索性分析 When we hear about Data science or Analytics , the first thing that comes to our mind is Mod ...

  10. 【数据科学】探索性数据分析

    通常表现为:画一些直方图等,来看看数据的分布. 看起来探索性数据分析只是很小的一部分,其实它的地位很重要,是数据可科学中的重要一环. 这个像太祖长拳,用在不同的人手里,会有不同的效果.换句话说,随着你 ...

最新文章

  1. 安装 Enthought Tool Suite 时遇到的问题
  2. 如何仅使用HTML和JavaScript构建简单的URL缩短器
  3. 牛逼!一个故事讲清楚 NIO 了
  4. css为元素添加样式,JQuery如何为元素添加样式
  5. 与女儿谈商业模式 (3):沃尔玛的成功模式
  6. 从压缩文件将数据导入SQL Server
  7. Velocity 语法示例
  8. jquery 获取子元素的限制jquery
  9. 1月10日云栖精选夜读:专访金榕:四年蜕变,阿里iDST是如何登上浪潮之巅的?...
  10. Mac 让 iTerm2 记住用户名密码 expect 脚本
  11. mysql pt_mysql管理工具之pt
  12. 其他 - 所有中文字 附 拼音
  13. canal 记录 数据变更类型 QUERY ROWDATA INSERT xxx XXXXX
  14. FusionConpute虚拟机的发放与管理
  15. 【OpenCvSharp】使用SSIM指数衡量图片相似度
  16. 从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社
  17. Native崩溃说明 so库崩溃、SIGBUS(bad memory access) 和 SIGSEGV(Invalid memory reference)
  18. 百练4115 鸣人和佐助(变式BFS)
  19. 图解Java开发工具JBuilder 9 0(三)
  20. 三年级计算机学打字备课,小学三年级信息技术认识键盘教案

热门文章

  1. StereoNet: Guided Hierarchical Refinement for Real-Time Edge-Aware Depth Prediction(ECCV 2018)
  2. 关于STM32F105 软硬件环境搭建
  3. oms系统应用服务器,OMS、WMS、TMS、ERP之间的关系
  4. 更好的 java 重试框架 sisyphus 的 3 种使用方式
  5. unity 裙子摆动_【Unity Shader】摇摆的小草——顶点动画
  6. 树莓派各类显示屏体验
  7. 哈夫曼树及哈夫曼编码(10分)
  8. 上帝模式代码_生产代码中的上帝模式
  9. 求排列组合的两种方式 模板
  10. 【软件工程】数据流图 ( 数据流图简介 | 数据流图概念 | 数据流 | 加工 | 数据存储 | 外部实体 | 数据流图分层 | 顶层数据流图 | 中层数据流图 | 底层数据流图 )