「实战」南京房价的秘密——小区价格篇「2」

  1. 「实战」南京房价的秘密——准备篇
  2. 「实战」南京房价的秘密——小区价格篇「1」

案例二:南京历年小区建成情况-折线图

# 计算南京历年的小区建成数量
Jianzhu_tmp = Xiaoqu["建筑年代"].value_counts()
Jianzhu_year = Jianzhu_tmp.sort_index().reset_index()
Jianzhu_year.columns = ["year", "cnt"]
# 时间跨度太大,因此选择80年以后、18年以前的数据
Jianzhu_year = Jianzhu_year[(Jianzhu_year["year"]>="1980") & (Jianzhu_year["year"]<="2018")]

plt.figure(figsize=(16, 6))
# 基于plot()语句(折线)
plt.plot(Jianzhu_year["year"], Jianzhu_year["cnt"], color="#A0522D", alpha=0.9, 
         marker="o", label="小区数量", linewidth=2, linestyle="--")
plt.title("南京小区建成数量与年份的关系", fontsize=15)
plt.legend()

图片描述

从绘图的结果看,最高点在2000年,其次是在2005年。纵观整个时间轴,小区建成速度起起伏伏,似乎并无明显规律。那我们换个视角,图上哪些年份的值是在平均线以上,哪些则是在平均线以下的。

plt.figure(figsize=(16, 6))
plt.plot(Jianzhu_year["year"], Jianzhu_year["cnt"], color="#A0522D", alpha=0.9, label="小区数量", linewidth=2, linestyle="-")

# 绘制数据的均线,并进行颜色填充,增加图形的可读性
plt.fill_between(Jianzhu_year["year"], Jianzhu_year["cnt"].mean(), Jianzhu_year["cnt"], color="#CD853F")
plt.title("南京小区建成数量与年份的关系", fontsize=15)
plt.legend()

图片描述

规律非常明显了,98年以后,南京的城市化进入了非常快速的发展阶段(每年小区建成数量越多,我们认为城市化的速度越快)。1998-2010这12年间,小区的建成数量都在历史均值以上,这种现象在21世纪初的前5年尤为显著。

而到了2010年之后,城市化速度开始趋稳并逐步回落。特别是2018年,降幅尤为明显,这是因为17年之后,南京开始限购限卖限价等史上最严的楼市政策,土拍地块很少,市场非常冷清。

此外这张图还是能够从侧面看得出来政府对土拍节奏的控制。

那这张图是怎么实现的呢?对比上下两个绘图语句,变化点除了 plot() 语句的参数微调外,就是增加了 fill_between() 语句。该语句的作用是以指定颜色填充两条曲线之间的部分。其中第一个参数表示待填充区域的 x 轴的范围,第二个参数表示第一条曲线(这里常数表示平行于 x 轴的直线),第三个参数表示第二条曲线, color 表示以指定颜色填充。当然了,你也可以增加 alpha 参数来指定填充色块的透明度。

案例三:南京下辖各区历年小区建成情况-折线图

城市的发展通常都是不平衡的,对于市中心来说,城市化接近100%。城市化的过程通常伴随着拆县并区、行政级别提升,这对后增设的行政区是一大利好。这个案例我们就来一起看看。

简单来说,为了实现我们的目的,最简单的方法就是针对每个行政区分别绘图。聪明的朋友肯定会想到,把画图语句做一次简单封装,用循环来调用就行了。

这个小技巧后面会经常用到,但是这里再教大家一些不太一样的东西:把多图绘制到一起,统一坐标轴,可读性更强。

# 采集代绘图的行政区
Area = Xiaoqu["区县定位"].unique().tolist()

# 绘制组合图,组合图的分布位11*1,呈列分布,图层大小16×40
figure, axes = plt.subplots(len(Area), 1, figsize=(16, 40))
plt.subplots_adjust(wspace=0.2, hspace=0.3)

# 对Area中的每个行政区遍历、绘图,需要注意的是绘图语句需要指定到具体轴,例如axes[1]
for index, value in enumerate(Area):
    # 绘图前的统计运算:按照年份排序;对于数据空缺的年份,默认置0;
    Jianzhu_area = Xiaoqu[Xiaoqu["区县定位"] == value]["建筑年代"].value_counts()
    Jianzhu_area.sort_index(inplace=True)
    Jianzhu_area.columns = ["year", "cnt"]
    Jianzhu_area = Jianzhu_area.loc["1980":"2018"]
    Jianzhu_area = Jianzhu_area.reindex([str(i) for i in range(1980, 2019, 1)])
    Jianzhu_area.fillna(0, inplace=True)

    # 绘图语句
    axes[index].plot(Jianzhu_area.index.tolist(), Jianzhu_area.tolist(), color="#A0522D", alpha=0.9, label= value+"小区数量", linewidth=2, linestyle="-")
    axes[index].fill_between(Jianzhu_area.index.tolist(), Jianzhu_area.mean(), Jianzhu_area.tolist(), color="#CD853F")
    axes[index].legend()
    axes[index].set_ylim(0,85)

# 在索引为0的轴上设置标题,作为整个图片的标题
axes[0].set_title("南京下辖各区历年小区建成情况", fontsize=15)

图片描述

从图上看,南京的传统主城区:玄武、鼓楼、秦淮的小区建成数量自2000年以后就逐步步入均线以下,并且日渐萎缩,到现在为止基本无地可卖。江宁、雨花、栖霞、浦口、建邺自2000年以后,开始逐步加大开发力度,小区建成量一路走高,但是到2018年左右都均萎缩到均线附近。溧水六合的偏远区域几乎无数据,可能原因是历史统计未有效覆盖,这里不加以分析。

整体看南京城市板块在逐步延伸,南京房地产的黄金时期应该是2000到2010年,到目前为止,南京正在逐步步入“二手房”时代。

案例四:南京下辖各区小区均价情况-箱体图

通常大家都在说的均价,但是均价有着明显的局限性,即单一均价很难反映某个地区的房价水平。特别是两个房价均价一样的地区,可能其房源组成迥然不同,因此这里给大家推荐用箱体图来表征。通常一个箱体可以同时表征中位数、均值、上四分位数、下四分位数、上下限以及异常值等指标,信息量非常丰富。

Price_mean = Xiaoqu[["区县定位", "参考均价"]].dropna()
Price_mean["参考均价"] = Price_mean["参考均价"].astype(np.int32)
# 将原始数据分块、整理
box_data = []	# 箱体图的房价数据
labels = []		# x轴的标签数据
for index, value in enumerate(Area):
    box_data.append(Price_mean[Price_mean["区县定位"] == value]["参考均价"].values.tolist())
    labels.append(value)
plt.figure(figsize=(10, 8))
plt.boxplot(box_data, # 每个箱体的绘图数据
            labels = labels, # x轴的标签名
            patch_artist=True, # 设置自定义颜色填充箱体,默认白色填充
            showmeans=True, # 显示均值
            boxprops = {
    
    'color':'black','facecolor':'blue', 
                        'color':'blue', 'alpha':0.7}, # 设置箱体属性,填充色和边框色
            flierprops = {
    
    'marker':'o','markerfacecolor':'red', 
                          'color':'black', 'alpha':0.7}, # 设置异常点的属性,包括点的形状、填充色和边框色
            meanprops = {
    
    'marker':'*','markerfacecolor':'yellow',
                         'markersize':'12'}, # 设置均值点的属性,点的形状、填充色
            medianprops = {
    
    'linestyle':'--', 
                           'color':'white'},# 设置中位数线的属性,线的类型和颜色
           )
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.title("南京下辖各区小区均价情况", fontsize=15)

图片描述

从上图看,南京小区房价的第一梯队是鼓楼、建邺、玄武、秦淮,第二梯队是江宁、雨花台、浦口、栖霞,第三梯队是溧水、六合、高淳。

从上四分位数看,建邺、鼓楼一马当先,其次是玄武,TOP三兄弟甩开其他伙伴一大截,妥妥的豪宅区域(也有学区房的加成)。

并且从图上我们也能看出,价格越高的板块,均值(黄色星星)和房价中位数(白色虚线)就背离的越厉害,均值普遍高于中位数,这是因为新出的豪宅小区大幅拉高了整体板块的均值。

总结

从这一小节的分析,朋友们基本能够看出来,南京的核心城区板块、新兴板块以及刚需板块在哪里啦。

本节一共介绍了三类图形的基本画法:柱状图、折线图、箱体图。柱状图主要用来比较不同值的大小,折线图用来表示时间趋势更合适一些,箱体图则用作分析数据的分布。

下一小节我们将继续利用小区的数据,跟朋友们聊一聊南京商品房数量的话题,尽情期待!

猜你喜欢

转载自blog.csdn.net/qq_33254766/article/details/108552787