《兰州市落实强省会战略进一步优化营运环境若干措施》于2022年4月1日会议通过,兰州印发1号通知进一步放宽购房政策,包括降低个人购买住房门槛、减轻个人住房消费负担、加大住房公积金支持等政策。
本文基于此借助Python工具爬取甘肃省和兰州市的房价数据,根据爬取的数据做分析,以及可视化,分析目前本地的房价水平,对于数据分析的结果可以作为下一步购房的参考标准。
示例工具:anconda3.7本文讲解内容:房价数据可视化分析
适用范围:pandas数据爬取、pyecharts可视化
甘肃省房价分析
首先获取甘肃省的房价数据,打开汇聚数据网站,网址链接如下,该网站包含详细的甘肃省各城市的房价数据。
使用read_html函数将网页数据爬取下来,编码方式设置为'utf-8',header=0将第一行作为列索引,由于read_html解析出来的数据是列表形式,[0]用于切片第一部分数据。
import pandas as pd
df = pd.read_html("https://fangjia.gotohui.com/fjdata-30", encoding='utf-8',header=0)[0]
df['城市']=df['城市']+"市"
df
爬取下来的数据如上所示,一共爬取14行6列数据。
df.shape
(14, 6)
导入Geo库做一个热力图,代码较简单,导入城市和房价数据即可,注意我们从网页爬取下来的数据城市名称是不带"市"的,但是使用pyecharts做热力图需要加"市",手动添加df['城市']+"市"。
#热力图
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType
gansu_city=df['城市'].tolist()
values=df['二手房(元/㎡)'].tolist()
c = (
Geo()
.add_schema(maptype="甘肃")
.add("二手房价格",
[list(z) for z in zip(gansu_city, values)],
type_=ChartType.HEATMAP)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,type_="color",min_=0,max_=13000),
title_opts=opts.TitleOpts(title="甘肃省各市二手房数据热力图",subtitle='单位:二手房(元/㎡)'))
)
c.render_notebook()
由热力图可以看出甘肃省的二手房价格偏高主要集中在兰州市周围,从整体分布来看呈东南方的房价数据高于西北方,也很好理解,西北方地广人稀,市场需求不大。
同样的导入城市和房价数据,使用Map做填充地图,同样在做填充地图时注意城市名称需要带"市"。
#填充地图
from pyecharts import options as opts
from pyecharts.charts import Map
gansu_city=df['城市'].tolist()
values=df['二手房(元/㎡)'].tolist()
c = (
Map()
.add("二手房价格", [list(z) for z in zip(gansu_city, values)], "甘肃")
.set_global_opts(title_opts=opts.TitleOpts(title="甘肃省各市二手房数据填充地图",subtitle='单位:二手房(元/㎡)'),
visualmap_opts=opts.VisualMapOpts(is_show=True,type_="color",min_=0,max_=13000))
)
c.render_notebook()
由填充地图可以看出兰州市的房价最高,这也很好理解,兰州作为省会城市房价是最高的,其次也带动周边城市的房价水平,具体的兰州市内的房价水平是怎样的?我们继续分析。
兰州市房价分析
同理还是在聚汇数据这个网站,找到兰州市各区的房价数据。
使用read_html函数爬取网页数据,发现返回的是一个列表数据。
import pandas as pd
df = pd.read_html("https://fangjia.gotohui.com/fjdata-321", encoding='utf-8')
df
我们从返回的列表数据中切片,[2]表示切出第三部分数据,同时header=0将第一行数据作为列索引。
import pandas as pd
df = pd.read_html("https://fangjia.gotohui.com/fjdata-321", encoding='utf-8',header=0)[2]
df
使用pyecharts库导入Bar包做一个条形图,同时设置markline_opts参数,做一个房价的平均值辅助线。
from pyecharts import options as opts
from pyecharts.charts import Bar
df.sort_values(by=['单价(元/㎡)'], ascending=True,inplace=True)
c = (
Bar()
.add_xaxis(df['区域'].tolist())
.add_yaxis("房价", df['单价(元/㎡)'].tolist())
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="兰州市各区房价数据情况"))
# 设置系列配置
.set_series_opts(
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="平均值")]),)
)
c.render_notebook()
由图像可以看出,兰州市内城关区的房价数据最高13644元/平米,而红古区的房价最低5364元/平米,均价在9670.33元/平米,不同地段的房价数据差异较大,价格以市中心地段较高,郊区较低。
PS:以上房价数据均采集于聚汇数据,这里仅根据现有数据进行分析,不同房产数据可能有些许不同,这里仅作为本文分析论点,综合兰州市1号通知放宽购房政策,可以看出兰州市也在积极地促进市场发展,降低购房的启动资金,势必恢复居民购买需求。
三年互联网数据分析经验,擅长Excel、SQL、Python、PowerBI数据处理工具,数据可视化、商业数据分析技能,统计学、机器学习知识,持续创作数据分析内容,点赞关注,不迷路。