用數據說話:北京房價數據背后的數據


 

從2014年對樓市的普遍唱衰,到2015年的價格回暖,到底發生了怎樣的改變?本文就嘗試通過大數據來和豐富的圖表,為大家展現數據背后的數據。

 

  •      數據采集采用筆者用C#開發的爬蟲工具。
  •      數據清洗ETL采用了筆者開發的工具軟件。
  •      數據分析采用ipython notebook和pandas
  •      可視化使用了matplotlib和seaborn.
  •      熱力圖使用了百度地圖API, 按經緯度0.01度為一個子區域,計算其中的平均值作為當前區域的房價/二手房數量。

至於搭建ipython notebook和安裝相應類庫的操作,以及各個類庫使用方法,可參考相應的教程。

之前曾發表在博客園首頁后被撤回,應管理員要求進行修改,重新發布。

 


 

數據來源

這些數據是筆者在2014年10月年和2015年10月份兩次,在鏈家官網上抓取的在售二手房數據,2014年約為64000條,2015年總計約7W條。數據源可能會有偏差,因此結論僅供參考。附件有前1W條樣例數據,可供下載。

首先我們導入所需的類庫:

# -*- coding:utf-8 -*-
import mongo;
import pandas as pd;
import csv;
from pandas import DataFrame,Series
View Code

 之后加載所需的數據:

table2014 = pd.read_table("LJ2014.txt",encoding='utf-8',engine='python',quoting=csv.QUOTE_NONE)
table2015 = pd.read_table("LJ2015.txt",encoding='utf-8',engine='python',quoting=csv.QUOTE_NONE)
table2014[u'小區名']=table2014[u'小區名'].map(lambda x:unicode(x).strip("'"))
table2014[u'區縣']=table2014[u'區縣'].map(lambda x:unicode(x).strip("'"))
table2014[u'樓名']=table2014[u'樓名'].map(lambda x:unicode(x).strip("'"))
year= table2014[u'年份'].map(lambda x:str(x).split('/')[0])
table2014[u'小區']=table2014[u'位置'].map(lambda x:unicode(x).strip("'"))
 

 

瘋長的房價

從1992年到2015年,北京的房價經歷了怎樣的瘋狂?可以查看下面的圖表。

 

可以看到,1992年到2002年,呈現一個非常穩定的狀態。從2008年起,北京的房價如同火箭一般上竄。

 

有意思的是,如果按照建造時間來繪制圖表,會發現在2000年和2004年左右,達到高峰。在6W套二手房中,2000年總共建造了7697套,占比百分之11.21%。

xcqu2014=table2014.groupby(by=u'位置')
p=year.value_counts();
p=p.sort_index()[50:-1]
p.plot(title=u'北京各年建造房屋數量變化')
View Code

 

到了2014年,北京各個區縣的二手房價格如下圖:

areag=table2014.groupby(by=u'區縣')
areag[u'價格'].mean().order(ascending=True).plot(kind='barh',title=u'各城區的二手房平均房價')
View Code

 

 

西城區和東城區的平均價格在五萬五左右,之所以沒有達到網上其他數據所提到的喪心病狂的9萬,是因為我們分析的是二手房。目前二環內新樓盤的數量極少,幾乎沒有討論的價值。

 

我們將房價以熱力圖方式繪制在地圖上,就會非常直觀:

 

顏色越深,代表其價格越高。除了西城,東城這些老城區,中關村(包含大量的學區房)和國貿(北京CBD)都價格高企。

 

如果我們改變縮放等級,進一步縮小地圖范圍,可以看到最貴的房子,集中在西單,南鑼鼓巷,國貿,以及北新橋地區。

 

這些最貴小區的房價有多貴呢?下面列出排名前十的十個小區的價格:

xcqu2014[u'價格'].mean().order(ascending=False)[1:10].plot(kind='barh',title=u'價格最高的十個小區的平均房價')

 

 

文華胡同的位置在哪里呢?筆者專門去搜索了一下。這個超牛無比,價格在33萬/平的文華胡同在靠近鬧市口大街的西單商圈。

 

更誇張的是,兩套房子都是平房,面積分別是12平和15平,其中一套還是1949年建的。中介給出的宣傳標語是,最牛實驗二小學區房,搶搶搶!這么小的面積,估計是四合院的廂房改造的吧。現在官網上已經下架。

 


 

什么樣的房子最多?

 

我們先看,什么類型的樓房最多,下面給出了樓房總體高度的比例。可以看到,二手房中,六層是最多的。國家規定,七層就要裝電梯了。因此在2000年以前,大部分的居民樓都是6層。

lc=lc=table2014.groupby(by=u'樓層').size();
lc.order(ascending=False)[:20].plot(kind='barh',title=u'樓高比例')

 

再看看不同面積的房子所占總數的比例。我們取面積為40-140平米的房子,進行了統計分析,結論如下圖:

size=table2014.groupby(by=u'面積').size();
import re;
takenum= re.compile('\d+');
size=size[size.index.map(lambda x:takenum.match(x) is not None)]
size.index=size.index.map(lambda x:int(x))
size.order(ascending=False)[:100].sort_index().plot(kind='line',title=u'房型面積和對應比例')
View Code

 

首先選出面積值不為空且為數字的所有行,之后將其轉換為int類型,后對其進行排序並繪圖。

可見,60平的一室一廳或兩室一廳最為常見。90平米的三居和兩居也較多。

 

我們再對二手房存量繪制熱力圖:

 

可以看到,二手房主要集中在天通苑,北苑,望京,十里堡和通州。這基本上與北京2004年發布的《北京市城市總體規划2004-2020》的內容相符:

 

很有意思的是,綠色的區域相當空曠,比如筆者目前所在的三元橋地區,和酒仙橋之間隔了好大一片荒地,晚上夜跑時荒無人煙。

 


 

2014年到2015年的房價變化

 

下面是剛需讀者最關心的內容,2014年到2015年的北京房價,經歷了怎樣的變化?眾所周知,2014年房價走低,整體唱衰,甚至有商家打出了降價6000元/平的廣告來推銷房子。2015年,降准降息政策出爐,公積金貸款比例提高,北京房價回暖,我們知道肯定漲價了。但到底漲了多少呢?

這部分的代碼多一些,選取價格少於10萬,面積大於四十平米的房子,以減少錯誤的數據。求出2014年和2015年小區的交集,構造change結構,里面保存了每個小區的房子數量,2014年和2015年的平均價格。

table2014= table2014[(table2014[u'價格']<100000) & (table2014[u'面積']>40)]
table2015= table2015[(table2015[u'單價']<100000) & (table2015[u'面積']>40)]
xcqu2014=table2014.groupby(by=u'位置')

table2015[u'面積']= np.round(table2015[u'總價']*10000/table2015[u'單價'])

xcqu2015=table2015.groupby(by=u'小區')
p2015=xcqu2015.mean()[u'單價']
p2014=xcqu2014.mean()[u'價格']
xcqumonunt2014=xcqu2014.size()

xcqumerge=p2014.index&p2015.index
change= DataFrame({'2014': p2014[xcqumerge].values,'2015':p2015[xcqumerge].values,'mount2014':xcqumonunt2014[xcqumerge],'mount2015':xcqumonunt2015[xcqumerge]})

change['diff']=change['2015']-change['2014']
change['percent']= np.round( change['diff']/change['2014']*100.0) 
View Code

 

我們按照2014和2015年價格增減的百分比,繪制出下面的房價變化數量比例圖。可以看到,房價變化基本呈現正態分布趨勢。但均值不在0點,靠近5%左右,整體右移:

change[(change.percent>-30) & (change.percent<50)].groupby(by='percent').size().plot(title=u'不同漲跌幅度房子所占的數量')

 

 

經過統計,2014年的平均房價為40125/平,2015年為42535/平。漲價比例5.64%。也就是說,一套三百萬的房子,平均漲了16萬左右。

 

change[(change.percent>-30) & (change.percent<50)].mean(by='percent')

2014         40054.083797
2015         42400.225776 mount2014 15.352119 mount2015 13.466281 diff 2346.141979 percent 5.508430

 

我們列出10萬元以下單價,2015年小區內二手房數量超過20套的漲價排名前十的小區:

change[change.mount2015>20].sort(columns='percent',ascending=False)[:10]

 

 

上地房價怎么漲了這么多?即使在北京,7萬8的價格都已經是豪宅,可是上地的房子,一般都是普通的住宅。

 

原因還是學區房,海淀區教改使得這邊的房子變化極大。 上地東里小區內建有上地實驗小學,該小學可直升一零一中學上地分校,一零一中學上地分校位於上地西里北側,就是這9年直升的誘惑導致該區域房價直線攀升。可憐天下父母心!

當然,有漲價就有降價:基本上,降價的小區都在非中心城區,例如櫻花園就在順義。

change[change.mount2015>20].sort(columns='percent',ascending=True)[:10]

 

 

 

 


 

結論

5%的漲幅,已經說明2015年比2014年價格回暖不少。也有少部分郊區小區降價。當然,這種漲幅和之前火箭般的漲價不可同日而語。可以肯定的是,像北京這樣的城市,房子幾乎是不可能大跌的。但未來的事情,誰知道呢?

安得廣廈千萬間,大庇天下寒士俱歡顏!

 

文章已經很長,因此沒有將更多的內容囊括其中。我們還做了以下的事情:

  • 分析不同小區漲降價的原因並將其可視化到地圖上。

  • 同一個小區中,不同的房子價格差別很大,甚至能差兩萬元。為什么會出現這種情況?

  • 根據房子周邊的學校,醫院,商場等場所,計算房子的附加價值。

  • 嘗試預測不同小區未來的房價趨勢。

 

 


 

附錄:

樣例數據下載

 

鏈家在去年有約7W條數據,今年的出售二手房已經達到10W套,但是這些房源里有多少水分呢?根據2014年的數據按照編號檢查一下重復:一萬兩千多套房子出現了兩次,將近五千套房子出現過三次,甚至有一套房子出現過八次。其中水分可想而知。

 

同時,2014年的網頁數據還會提供地理坐標信息,2015年就不存在了,所以文中涉及到地理信息的圖表都是2014年的。另外,雖然對房子的位置描述非常詳細,但中介不會告訴你這是幾號樓幾層。僅僅提供了樓房的總層高。原因不言自明。

 

同樣,數據的准確性也有問題。很多房子價格都是1萬,2萬,明顯是隨意標的。也有一部分價格高的離譜,如88萬/平。這些數據在處理前都已經篩掉。以免干擾分析結果。

 

     有任何問題,歡迎討論!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM