周末,爬取了 37483 條上海二手房信息,我是真的買不起!
儀表板展示

項(xiàng)目背景
去面試的時(shí)候被問(wèn)上海二手房的一些情況,作為一個(gè)土著,我只知道上海這個(gè)區(qū)挺貴的那個(gè)區(qū)大概這個(gè)價(jià),但是具體數(shù)值卻說(shuō)不上來(lái)。所以,就有了本文。
從政策上來(lái)看,自從 2016 年國(guó)家喊出“房住不炒”的口號(hào)之后中國(guó)的房?jī)r(jià)就出現(xiàn)了明顯的降溫。2019 年國(guó)家為了“救市”又宣布了幾條政策:
2、調(diào)整公積金貸款利率,提高了二房的房貸利率,打擊市場(chǎng)投機(jī)需求。
3、鼓勵(lì)租售并舉,鼓勵(lì)以住房租賃為主營(yíng)業(yè)務(wù)的企業(yè)買房。
4、居住證降低申請(qǐng)門檻新政,讓落戶買房更加容易。
5、農(nóng)民購(gòu)房有補(bǔ)助,幫助農(nóng)民工朋友們省去一部分買房成本。
從經(jīng)濟(jì)上來(lái)看,2020 年上半年上海人均可支配收入以 36577 元笑傲全國(guó),同比增長(zhǎng)3.64%??此泼利惖臄?shù)值背后,隱藏著多少被平均的普通老百姓。

從社會(huì)上來(lái)看,2019 年我國(guó)人口出生率創(chuàng)下 1949 年以來(lái)的最低值,即使在 2016 年開(kāi)放二胎政策以來(lái),人口出生率也沒(méi)有大幅提高。
從技術(shù)上來(lái)看,中國(guó)造樓能力世界第一!“基建狂魔”豈是浪得虛名!
分析目的
2、目前上海二手房?jī)r(jià)位、房源有何特點(diǎn)?
3、上海各區(qū)縣的掛牌情況,找出拋壓最大的區(qū)域
數(shù)據(jù)清洗
首先我們看一下爬取的數(shù)據(jù)。維度不是太多,但是有些列我們可以拆分,例如地區(qū)、所在樓層、抵押信息等。

在對(duì)數(shù)據(jù)進(jìn)行清洗前我們可以使用pandas_profiling進(jìn)行快速的統(tǒng)計(jì)分析。
import?pandas_profiling
pandas_profiling.ProfileReport(data).to_file("./report/html")

根據(jù)報(bào)告內(nèi)容我們可以看到本次數(shù)據(jù)總共有 37491 行,20 列,存在 7 行重復(fù),重復(fù)占比小于 0.1%,報(bào)告繼續(xù)下拉可以看到每一列的統(tǒng)計(jì)情況。
我們需要清洗的幾點(diǎn):
2、替換 None 值
3、將地區(qū)、房屋戶型、所在樓層、抵押信息進(jìn)行切分合并
4、轉(zhuǎn)換數(shù)據(jù)類型
5、刪除多余字符
6、由于爬取時(shí)出現(xiàn)的錯(cuò)誤,對(duì)價(jià)格列進(jìn)行重新賦值
7、剔除異常數(shù)據(jù)
#?如果有重復(fù)值,則保留第一個(gè)
data.drop_duplicates(keep='first',?inplace=True)
#?替換None
data?=?data.applymap(lambda?x:?'暫無(wú)數(shù)據(jù)'?if?x?==?'None'?else?x)
#?切分地區(qū)、房屋戶型、所在樓層、抵押信息后刪除原列,將拆分出的新列合并至原data
data?=?pd.concat([data,?data['地區(qū)'].str.extract(pat='(?P<區(qū)>.*?)\s(?P<鎮(zhèn)>.*?)\s(?P<環(huán)>.*)'),
??????????????????data['房屋戶型'].str.extract(
??????????????????????pat='(?P<室>\d+)室(?P<廳>\d+)廳(?P<廚>\d+)廚(?P<衛(wèi)>\d+)衛(wèi)'),
??????????????????data['所在樓層'].str.extract(
??????????????????????pat='(?P<所處樓層>.+)\(共(?P<總層數(shù)>\d+)層\)'),
??????????????????data['抵押信息'].map(lambda?x:x.strip()).str.extract(pat='(?P<有無(wú)抵押>.{1})抵押(?P<抵押情況>.*)?')],?axis=1)
data.drop(['地區(qū)',?'所在樓層',?'抵押信息'],?axis=1,?inplace=True)
data['區(qū)']?=?data['區(qū)']+'區(qū)'
#?去除建筑面積后面的平米單位,并轉(zhuǎn)為float
data['建筑面積']?=?data['建筑面積'].map(lambda?x:?float(x[:-1]))
#?轉(zhuǎn)換數(shù)據(jù)類型
data['價(jià)格']?=?data['價(jià)格'].astype(float)
#?轉(zhuǎn)換日期類型
data['掛牌時(shí)間']?=?pd.to_datetime(data['掛牌時(shí)間'])
#?如果存在非時(shí)間類型的字符串則替換為NaT
data['上次交易']?=?pd.to_datetime(data['上次交易'],?errors="coerce")
#?存在括號(hào)幾期、某區(qū),都暫且刪除
data['小區(qū)']?=?data['小區(qū)'].str.replace("[\(\(].*?[\)\)]",?"")
#?篩選出價(jià)格小于20的數(shù)據(jù),我們可以發(fā)現(xiàn)這些房源的面積及所屬區(qū)域都是比較好的,記錄的數(shù)據(jù)可能有所錯(cuò)誤
#?返回鏈家網(wǎng)站搜索這幾套房源后發(fā)現(xiàn),這些價(jià)格的單位都是"億",所以我們需要對(duì)所有數(shù)據(jù)再一次進(jìn)行清洗
#?統(tǒng)一使用'萬(wàn)'作為總價(jià)的單位
data['價(jià)格']?=?data['價(jià)格'].map(lambda?x:?x*10000?if?x?20?else?x)
#?計(jì)算每平米單價(jià)
data['均價(jià)']?=?round(data['價(jià)格']/data['建筑面積']*10000,?2)

從上面的散點(diǎn)圖我們可以看出右邊有一個(gè)異常點(diǎn),建筑面積4702平米,總價(jià)68萬(wàn),我返回鏈家網(wǎng)查詢?cè)撎追吭窗l(fā)現(xiàn)在網(wǎng)站上他就是這么標(biāo)價(jià)的。而同小區(qū)的價(jià)格如下所示。

該區(qū)域的均價(jià)都在 14000元/平米~20000元/平米,所以認(rèn)為是鏈家網(wǎng)數(shù)據(jù)錄入出現(xiàn)了問(wèn)題。我們需要剔除掉該數(shù)據(jù)。
描述性分析

2、數(shù)據(jù)的統(tǒng)計(jì)周期是 2013-01-18 2020-07-24
3、上海目前出售的二手房面積從 13 平米 ~ 1663.1 平米不等
4、根據(jù)爬取數(shù)據(jù)來(lái)看上海最貴的二手房均價(jià)為 319960.62 元/平米,整體均價(jià)為 56466.26 元/平米
均價(jià)超過(guò) 30 萬(wàn)元/平米的房源到底在哪里?

可以看到掛牌的四套花園洋房均價(jià)超過(guò) 30 萬(wàn)元/平米,掛牌時(shí)間都已經(jīng)挺久的了。大家可能對(duì)興國(guó)路不大熟悉,但是相信大家在不少拍攝背景為上海的影視劇中都見(jiàn)到過(guò)一幢大樓。

沒(méi)錯(cuò),就是武康大樓,最早稱為“諾曼底公寓”,而我們更喜歡叫它“九層樓”,這已經(jīng)是清除了電線后的模樣,其實(shí)我小時(shí)候的印象是這樣的。

電線編織如蜘蛛網(wǎng),這才是老底子的上海味道。
“九層樓”所處位置是個(gè)六岔路口,大家若要打卡請(qǐng)注意安全不要停留在路中間。旁邊的武康路也是一條很有歷史底蘊(yùn)的“名人路”。
熱門商圈
hot_list?=?['四川北路',?'中山公園',?'漕河涇',?'徐家匯',?'陸家嘴',?'南京西路',
????????????'南京東路',?'人民廣場(chǎng)',?'淮海中路',?'虹橋',?'北外灘',?'新天地',?'靜安寺']
hot?=?data[data['鎮(zhèn)'].isin(hot_list)].groupby(by='鎮(zhèn)')['均價(jià)'].agg(
????['mean',?'count']).sort_values(by='count',?ascending=True)
pyc.Bar().add_xaxis(hot.index.to_list()).add_yaxis(series_name="",?yaxis_data=hot['count'].tolist(),?label_opts=opts.LabelOpts(is_show=False)).reversal_axis(
).set_global_opts(title_opts=opts.TitleOpts(title="熱門商圈掛牌數(shù)",?subtitle="崇明區(qū)缺少相應(yīng)房源數(shù)據(jù);數(shù)據(jù)截至2020年7月\n數(shù)據(jù)來(lái)源:鏈家網(wǎng)?"),?toolbox_opts=opts.ToolboxOpts()).render_notebook()


中山公園在售 674 套,均價(jià) 72750 元/平米,算是幾個(gè)地塊中比較便宜的了。

戶型
huxing?=?data['房屋戶型'].where(data['房屋戶型'].isin(
????['2室1廳1廚1衛(wèi)',?'1室1廳1廚1衛(wèi)',?'2室2廳1廚1衛(wèi)',?'3室2廳1廚2衛(wèi)',?'3室1廳1廚1衛(wèi)',?'2室1廳1廚2衛(wèi)']),?other='其他',?errors='ignore')
pyc.Pie(init_opts=opts.InitOpts(height='600px',?width='600px')).add(series_name='房屋戶型',?data_pair=huxing.value_counts().items(),?radius=(100,?150),?rosetype="radius",?label_opts=opts.LabelOpts(
????is_show=True,?formatter="\n{c}套\ngo7utgvlrp%")).set_global_opts(title_opts=opts.TitleOpts(title="上海二手房掛牌房屋戶型",?subtitle="崇明區(qū)缺少相應(yīng)房源數(shù)據(jù);數(shù)據(jù)截至2020年7月\n數(shù)據(jù)來(lái)源:鏈家網(wǎng)?"),?toolbox_opts=opts.ToolboxOpts()).render_notebook()
上海二手房掛牌的戶型千奇百怪,但還是以兩室戶居多,一室戶偏少。
二手房?jī)r(jià)位
data['房?jī)r(jià)分層']?=?pd.cut(data['價(jià)格'],?bins=[-np.inf,?100,?300,?500,?800,?1000,?np.inf],?right=True,
??????????????????????labels=['100萬(wàn)以內(nèi)',?'100-300萬(wàn)',?'300-500萬(wàn)',?'500-800萬(wàn)',?'800-1000萬(wàn)',?'1000萬(wàn)及以上'])
pyc.Pie(init_opts=opts.InitOpts(height='500px',?width='500px')).add(series_name="房?jī)r(jià)",?data_pair=data['房?jī)r(jià)分層'].value_counts().items(),?radius=(100,?150),?rosetype=True,?label_opts=opts.LabelOpts(
????formatter="\n{c}套\ngo7utgvlrp%")).set_global_opts(title_opts=opts.TitleOpts(title="上海房?jī)r(jià)分層",?subtitle="崇明區(qū)缺少相應(yīng)房源數(shù)據(jù);數(shù)據(jù)截至2020年7月\n數(shù)據(jù)來(lái)源:鏈家網(wǎng)?"),?toolbox_opts=opts.ToolboxOpts()).render_notebook()
100 萬(wàn)以內(nèi)想在上海買套房基本是不可能的了??梢酝Q崗考慮一下。同志們努把力,100-300 萬(wàn)有 13000 多套房源等著你!
房屋所屬環(huán)線
pyc.Pie(init_opts=opts.InitOpts(height='500px',?width='500px')).add(series_name="環(huán)線",?data_pair=data['環(huán)'].replace("",?"暫無(wú)數(shù)據(jù)").value_counts().items(),?radius=(100,?150),?rosetype=True,?label_opts=opts.LabelOpts(
????formatter="\n{c}套\ngo7utgvlrp%")).set_global_opts(title_opts=opts.TitleOpts(title="二手房所屬環(huán)線",?subtitle="崇明區(qū)缺少相應(yīng)房源數(shù)據(jù);數(shù)據(jù)截至2020年7月\n數(shù)據(jù)來(lái)源:鏈家網(wǎng)?"),?toolbox_opts=opts.ToolboxOpts()).render_notebook()
外環(huán)外的房源明顯是最多的,很可能是外環(huán)外房?jī)r(jià)偏低,所以比較火熱吧,我們繼續(xù)向下看。
上海均價(jià)地圖
pyc.Map(init_opts=opts.InitOpts(height='500px',?width='500px')).add(maptype="上海",?series_name="均價(jià)",?data_pair=[list(i)?for?i?in?data[data['掛牌時(shí)間'].dt.year?==?2020].groupby(by=['區(qū)'])['均價(jià)'].mean().apply(round).items()],?is_map_symbol_show=False,?is_selected=True,?label_opts=opts.LabelOpts(
????is_show=False)).set_global_opts(tooltip_opts=opts.TooltipOpts(formatter=":{c}元/平米"),?visualmap_opts=opts.VisualMapOpts(max_=100000,?pos_right='5%',?pos_bottom='20%',?is_calculable=True),?title_opts=opts.TitleOpts(title="2020年上半年上海二手房均價(jià)圖",?subtitle="崇明區(qū)缺少相應(yīng)房源數(shù)據(jù);數(shù)據(jù)截至2020年7月\n數(shù)據(jù)來(lái)源:鏈家網(wǎng)?"),?toolbox_opts=opts.ToolboxOpts(),?legend_opts=opts.LegendOpts(is_show=False)).render_notebook()
看看中間那紅彤彤的區(qū)域,市中心的價(jià)格遠(yuǎn)遠(yuǎn)高于市區(qū)外。
掛牌量

雖然從上圖來(lái)看上海二手房掛牌量逐年遞增,但是考慮到數(shù)據(jù)爬取日期為2020年7月23日,可能前些年掛牌的二手房已經(jīng)出售,所以爬取不到掛牌信息。故不能由此判斷今年二手房市場(chǎng)較往年更活躍。

今年一二月受疫情影響,上海二手房掛牌量較低,隨著疫情情況緩和,從三月起上海二手房掛牌量逐漸增加。2020年上半年6月份的掛牌量是最大的。

從交叉表來(lái)看,2020年1月1日至2020年7月23日鏈家網(wǎng)上已經(jīng)掛牌 24673 套二手房。其中嘉定、閔行、寶山等區(qū)的拋壓較大,7月浦東的掛牌量激增。
所以驗(yàn)證了上面外環(huán)外拋售房源較多的現(xiàn)象。
均價(jià)

雖然上海房?jī)r(jià)呈現(xiàn)著下跌趨勢(shì),但我還是買不起。

2020年上半年上海二手房均價(jià)在55100元/平米附近波動(dòng),4月份更是跌至54150元/平米。


看看這可愛(ài)的漸變色,黃浦區(qū)這房?jī)r(jià),一年賺的錢還不夠買個(gè)廁所的。

用折線圖來(lái)看看趨勢(shì),好像各區(qū)都挺平緩的,浦東新區(qū)倒是在四月份之后有所上漲,虹口區(qū)在七月也有一小波上漲。
總結(jié)
2、除了虹口區(qū)以外各區(qū)的二手房均價(jià)在第二季度都趨于緩和。
3、100萬(wàn)以下的房源幾乎所剩無(wú)幾,主要價(jià)位集中在100-300萬(wàn)。
4、外環(huán)外的房源占比較大,是因?yàn)榧味?、閔行、寶山等區(qū)的掛牌量較高。
5、單身貴族喜歡的一室一廳房源僅剩下15.65%,連二手房房型的意思都是叫你趕緊找對(duì)象。
完整代碼:
鏈接:
https://pan.baidu.com/s/1BRC76KRc3uhCcRh8Ukh_Og?
提取碼:uesn
戀習(xí)Python 關(guān)注戀習(xí)Python,Python都好練
好文章,我在看??
