大数据项目开发案例_大数据分析技术——项目案例2(房价数据分析上)

1

二手房房价分析简述

在现在这个社会,房子成为绝大多数人心中难以抹去的痛:不仅在于它的价格高不可攀,也在于我们多少有些囊中羞涩。若不是得益于亲朋好友相助、父母相帮,估计依靠着我们这点微薄的薪水去购房,对很大一部分人来说无异于是鸭梨山大的。

所以这一节开始我们就来对这个让我们又爱又恨的房价做一个相对细致的分析,看看究竟是哪些因素导致了高房价的产生(PS:本节的分析仅限于技术层面,脱离技术层面的因素不再本项目案例的分享之列!);同时也想看看这些房价背后到底都有哪些规律可以被我们所认识。如果我们能够更加清楚地掌握房价背后的影响因素、走势、分布规律,或者在我们考虑购房的时候也能多少提供一点点参考。

话不多说,我们就以从伟大的互联网上下载下来的一份关于帝都的二手房房价数据为例(注意:这份数据是一份被整理好的数据!),来展开深入的分析。

2

瞜一眼房价数据的基本信息吧

首先,我们还是先大致瞅一眼所收集到的二手房房价数据,以大致了解数据集中的一些基本信息:

import pandas as pd

from pyecharts.charts import Bar,Pie,Line

import pyecharts.options as opts

from collections import Counter

import numpy as np

#设置字段对齐

pd.set_option('display.unicode.ambiguous_as_wide', True)

pd.set_option('display.unicode.east_asian_width', True)

#设置最大显示列数与显示宽度,以防止出现不必要的换行输出现象

pd.set_option('display.max_columns',500)

pd.set_option('display.width',1000)

data = pd.read_csv('fangjia.csv',encoding='utf-8')

print('房价数据的基本统计信息:')

print(data.describecribe())

print('查看房价的基本信息:')

print(data.info())

其运行结果截图如下:

1d725e617e76980ba2f2de4cbc38787b.png

从这个基本信息的截图中我们看到了一些有用的信息:

1、所售二手房的楼层可以说从底层到57层的都有,但围绕在11层附近的二手房较多,这点从楼层分布的中位数可以看出来。这也比较符合实际情况,因为大多数人都喜欢购买不高不低的那种楼层的房子;

2、所售二手房的总价平均在610万左右,最低成交价为60万,最高成交价达到了6000万,居然相差100倍!!!!!!话说要是还有总价为60万左右的房子,我还真想赶紧买一套,哈哈哈;

3、所售二手房的房屋面积平均也在99平米左右,这也很符合一般规律。说明在这些购买二手房的客户中,大多数人还是以改善性住房需求为主,并非是为了投机炒房。当然,这其中也不妨房屋面积超大到1019个平方的,估计是土豪们购置的别墅一类的房产;

4、房子的建筑年底,最老的有1950年,最新的到了2017年,而平均建筑年份大约在2001~2003年左右,大概率说明在这个时间段建成的房子比较好卖;

5、此外,我们还看出在事关电梯(Elevator)一栏中的信息存在着比较明显的数据缺失,因此这就要求我们在阅读完房价数据的基本信息之后就要着手开始去做数据清理工作。

3

房价数据清理

现在我们来对这份房价数据做一些必要的数据清洗和整理工作:

1、我们先把数据集中字段名由英文改成中文名;

2、然后我们在装修程度这一列数据中存在错误数据值的那些数据行去掉;

3、接着,我们还需要对电梯这一列数据中标注为NaN的数值做一些合理的数据替代,替代的标准参考于国家对于楼宇电梯的安装标准;

4、为房价数据添加一个解释每平米房价的均价数据列:

#在装修程度一列中存在一些错误数据,去掉这些数据

data['Renovation'] = data.loc[(data['Renovation'] != '南北'), 'Renovation']

#现在我们对数据集中的字段进行更换

columns = ['方位','区域','有无电梯','楼层','地址','房屋编号',

           '格局','总价(万)','所在城区','装修程度','面积','建筑年代']

data.columns = columns

data['均价(万)'] = data['总价(万)']/data['面积']

#从基本信息中我们看出关于电梯这一栏信息中存在着不少的缺失值

#因此我们需要对此进行缺失值处理,按照最新的居民用房电梯安装

#要求来填充即可

# 填补Elevator缺失值

data['有无电梯'] = data.loc[(data['有无电梯'] == '有电梯')|(data['有无电梯'] == '无电梯'), '有无电梯']

data.loc[(data['楼层']>6)&(data['有无电梯'].isnull()), '有无电梯'] = '有电梯'

data.loc[(data['楼层']<=6)&(data['有无电梯'].isnull()), '有无电梯'] = '无电梯'

print(data.head(10))

其运行结果截图如下:

89a01b67932914bfead10d02282b8a15.png

4

分析不同城区的房屋成交价

现在我们就来分析一下不同城区成交的房屋最高价格的一个走势,然后我们再看一下不同城区房屋成交价的最低价格的一个走势;最后,我们再看一下不同城区的房屋成交价的平均价的一个走势。

# df = data.groupby('所在城区')['总价(万)','均价(万)'].mean()

#分别计算出不同城区的最高成交价、最低成交价、平均成交价

df_price_max = data.groupby('所在城区')['总价(万)'].agg(

    {'最高成交价':np.max}).sort_index(by='最高成交价')

df_price_min = data.groupby('所在城区')['总价(万)'].agg(

    {'最低成交价':np.min}).sort_index(by='最低成交价')

df_price_mean = data.groupby('所在城区')['总价(万)'].agg(

    {'平均成交价':np.mean}).sort_index(by='平均成交价')

#计算不同城区的房屋均价

df_perprice = data.groupby('所在城区')['均价(万)'].agg(

    {'区域均价':np.mean}).sort_index(by='区域均价')

price_max_line = (

     #设置图像宽度,以能显示所有城区

    Line(init_opts=opts.InitOpts())

    .add_xaxis(list(df_price_max.index.to_numpy()))

    .add_yaxis('',list(df_price_max['最高成交价'].to_numpy()))

    .set_global_opts(title_opts=opts.TitleOpts(,pos_left='left'),

                     xaxis_opts=opts.AxisOpts(name="城区"),

                     yaxis_opts=opts.AxisOpts(name="总价"),)

    )

price_max_line.render_notebook()

其代码运行结果如下:

95614de65cb7eb1728ec06b03a929b9e.png

price_min_line = (

     #设置图像宽度,以能显示所有城区

    Line(init_opts=opts.InitOpts())

    .add_xaxis(list(df_price_min.index.to_numpy()))

    .add_yaxis('',list(df_price_min['最低成交价'].to_numpy()))

    .set_global_opts(title_opts=opts.TitleOpts(,pos_left='left'),

                     xaxis_opts=opts.AxisOpts(name="城区"),

                     yaxis_opts=opts.AxisOpts(name="总价"),)

    )

price_min_line.render_notebook()

其运行结果如下:

27bb7c6857a4a172142b35527289012d.png

price_mean_line = (

     #设置图像宽度,以能显示所有城区

    Line(init_opts=opts.InitOpts())

    .add_xaxis(list(df_price_mean.index.to_numpy()))

    #round(x,m)表示把浮点数想保留m位小数

    .add_yaxis('',[round(x,2) for x in list(df_price_mean['平均成交价'].to_numpy())])

    .set_global_opts(title_opts=opts.TitleOpts(,pos_left='left'),

                     xaxis_opts=opts.AxisOpts(name="城区"),

                     yaxis_opts=opts.AxisOpts(name="总价"),)

    )

price_mean_line.render_notebook()

其运行结果如下:

2ddabef6839a274f80b92c3b014111d6.png

从以上三张不同成交价的运行效果图来看,我们可以看出,在东城、西城、朝阳、海淀等核心城区的房价普遍高于其他行政区内的房价,这与当前的实际情况是吻合的。

此外,通过一个平均成交价的走势,我们大体上也能看出我们目前是否具备购房的一些基本硬件条件,听上去还是挺残酷的,哎~~~~~~

5

小结

通过本节的一些基本分析,我们大体上能够比较直观地看到房价的一个基本分布规律。但我们还想知道房屋均价的一个基本分布情况,也就是不同城区的房屋均价大概是个什么情况。至于更细的一个均价走势,比如某个小区、某个街道之类的,我们这里就不做多的介绍。

下一节我们继续围绕着这个房价数据集来展开分析,看看不同城区的房屋均价是一个什么样的走势。然后,我们还要统计一下在不同角度来考虑房屋销售的情况,比如不同户型的房屋销售量是个什么走势、有无电梯的房屋销售量是什么样的,以及不同城区的房屋销售量占比、不同楼层的房屋销售量占比等。

OK,本节的知识分享暂且到此,谢谢大家!我们下一节的分享中不见不散!

aee9b2e581dd894d43248415a75f8865.png

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值