-
項(xiàng)目意義:
本文旨在分析各維度的數(shù)據(jù),探索上海二手房整體情況及價(jià)格情況及價(jià)格的影響因素
-
本文分析的框架
(一)上海二手房整體情況的描述統(tǒng)計(jì)
(二)各城區(qū)房價(jià)分布;
1、各城區(qū)房價(jià)情況;
2、上海單價(jià)排名前15的小區(qū)些阅;
3、各城區(qū)單價(jià)最高的小區(qū)斑唬;
(三)各城區(qū)房源分析市埋;
1、各城區(qū)房源數(shù)量恕刘;
2缤谎、各城區(qū)二手房面積分布;
3褐着、各城區(qū)在售二手房數(shù)量排名前5的小區(qū)坷澡;
(四)房價(jià)影響因素探究;
1含蓉、房價(jià)與地理位置的關(guān)系频敛;
2、房價(jià)與戶型的關(guān)系谴餐;
3姻政、房價(jià)與樓層的關(guān)系;
4岂嗓、房價(jià)與朝向的關(guān)系;
5鹊碍、房價(jià)與建筑年代的關(guān)系厌殉;
0觀察數(shù)據(jù)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
%matplotlib inline
plt.rcParams['figure.figsize']=(10,6)
f=open(r'鏈家二手房.csv')
df=pd.read_csv(f)
-
原始數(shù)據(jù):
1、數(shù)據(jù)集一共有28201行侈咕,其中“朝向”公罕、“建筑時間”字段存在缺失值,這些缺失值將在后續(xù)分析過程中進(jìn)行處理耀销;
2楼眷、從習(xí)慣角度,將字段中文名重命名為英文熊尉;
3罐柳、“樓層”字段,需要進(jìn)行數(shù)據(jù)拆分狰住,分為兩個字段张吉;
4、“建筑時間”字段類型為subject催植,需要提取年份部分肮蛹,并存儲為timestamp類型勺择;
# 以下數(shù)據(jù)清洗、整理過程
# 1伦忠、重命名字段
df.rename(columns={'小區(qū)名稱':'village','戶型':'house_type','面積':'area','區(qū)域':'district','樓層':'floorlevel','朝向':'toward',
'價(jià)格(W)':'total_price','單價(jià)(平方米)':'unit_price','建筑時間':'construction_time'},inplace=True)
# 2省核、“樓層”字段處理
df['floor_level']=df.floorlevel.str.extract('(\D+)/')
df['floor']=df.floorlevel.str.extract('/(.*)層')
df.drop('floorlevel',axis=1,inplace=True)
df['floor']=df['floor'].astype(float)
# 3、‘建筑時間’字段處理
df['construction_time']=df.construction_time.str.extract('(\d+)年建')
df['construction_time']=pd.to_datetime(df.construction_time,format='%Y').values.astype('datetime64[Y]')
01上海二手房整體情況的描述統(tǒng)計(jì)
-
上海二手房整體情況:
目前在售房源28201套昆码。 - 面積:每套平均面積96平方气忠,50%的房子面積在85平方之內(nèi),屬于小戶型未桥;
- 單價(jià):平均單價(jià)6萬元笔刹,最高達(dá)到20萬元,超過50%的房子單價(jià)在5.8萬元以上冬耿,說明上海房價(jià)還是相當(dāng)高舌菜;
-
總價(jià):平均總價(jià)580萬元,中位數(shù)在430萬元亦镶,這是存在異常極大值的影響日月,拉高了房價(jià)的平均水平;
- 以上是各城區(qū)在售房源數(shù)量缤骨,其中崇明爱咬、金山、靜安三個區(qū)房源數(shù)量太少绊起,不具有統(tǒng)計(jì)意義精拟,因此在進(jìn)行房價(jià)分析上,將其刪除虱歪。
new_df=df[~df.district.isin(['崇明','金山','靜安'])]
02上海二手房單價(jià)分布情況:
sns.distplot(new_df.unit_price,bins=20)
plt.title('上海二手房單價(jià)分布情況')
- 上海二手房單價(jià)分布圖形類似于正態(tài)分布蜂绎,呈現(xiàn)中間高,兩邊低的形態(tài)笋鄙,單價(jià)均值為6萬元师枣,大多數(shù)在3-8萬之間。
- 2.1.1各城區(qū)平均單價(jià)排名:
fig,axes=plt.subplots(1,2,figsize=(16,4))
axes0,axes1=axes.flatten()
# 單價(jià)各城區(qū)單價(jià)分布箱線圖
sns.boxplot(x='district',y='unit_price',data=new_df,ax=axes0)
axes0.set_title('各城區(qū)單價(jià)分布箱線圖')
# 單價(jià)各城區(qū)總價(jià)分布箱線圖
sns.boxplot(x='district',y='total_price',data=new_df,ax=axes1)
axes1.set_title('各城區(qū)總價(jià)分布箱線圖')
plt.ylim(0,3000)
new_df.groupby('district').unit_price.mean().sort_values().plot.barh()
- 黃埔區(qū)以平均單價(jià)9萬排名上海第一萧落,接下來分別是徐匯區(qū)7.9萬践美,長寧7.5萬。平均價(jià)格在5萬以下的城區(qū)有4個找岖,分別是松江區(qū)4.2萬陨倡、嘉定區(qū)4.1萬、青浦區(qū)4萬宣增、奉賢區(qū)最便宜3萬玫膀。
- 2.1.2各城區(qū)平均總價(jià)排名:
new_df.groupby('district').total_price.mean().sort_values().plot.barh()
- 黃埔區(qū)以平均總價(jià)1059萬排名上海第一,接下來分別是長寧760萬爹脾,青浦676萬帖旨。
- 2.2上海單價(jià)排名前15的小區(qū):
# 部分小區(qū)在售房源數(shù)量小于10箕昭,不具有統(tǒng)計(jì)意義,因此刪除掉在售房源小于10套的小區(qū)
drop_village=new_df.groupby('village').count().query('area>=10').index
new_df[new_df.village.isin(drop_village)].groupby('village').mean().unit_price.sort_values(ascending=False).head(15).plot.barh()
- 由上圖可知解阅,平均單價(jià)排名前三位的小區(qū)分別是翠湖天地御苑落竹、華潤外灘九里、翠湖天地雅苑货抄;第一名的翠湖天地御苑單價(jià)述召,超過了15萬元,遠(yuǎn)高于排名第二的華潤外灘九里近2萬元
- 2.3各城區(qū)單價(jià)最高的小區(qū):
new_df[~new_df.village.isin(drop_village)].groupby(['district','village']).mean().reset_index().groupby('district').apply(lambda x:x.sort_values('unit_price',ascending=False)[:1])
以上是各個城區(qū)單價(jià)最高的小區(qū)蟹地,長寧區(qū)單價(jià)最高的小區(qū)宏業(yè)花園達(dá)到20萬积暖,奉賢區(qū)單價(jià)最高的申亞花澗墅僅6.6萬元,差異較大怪与。
03各城區(qū)房源分析夺刑;
- 3.1各城區(qū)房源數(shù)量:
group_district=df.groupby('district')
sns.countplot(x='district',data=df)
plt.title('各城區(qū)房源數(shù)量')
- 浦東區(qū)目前在售房源數(shù)量最多,約2600套分别,黃浦區(qū)和奉賢區(qū)房源數(shù)量在1500套左右遍愿,靜安區(qū)、金山區(qū)耘斩、崇明區(qū)房源數(shù)量極其少沼填,其他城區(qū)房源數(shù)量相差不大,在2000套左右括授。
- 3.2各城區(qū)二手房面積分布
district_area_rank=group_district.mean().sort_values('area',ascending=False).reset_index()
plt.bar(district_area_rank.district,district_area_rank.area)
plt.title('各城區(qū)房源平均面積')
1坞笙、青浦區(qū)平均面積遠(yuǎn)大于其他其他城區(qū),再對比不同城區(qū)平均單價(jià)荚虚,青浦區(qū)的單價(jià)較低39898元羞海,故分析可能原因?yàn)椋呵嗥謪^(qū)位于上海的郊區(qū),屬于新開發(fā)地區(qū)曲管,土地資源相對于市中心來講相對寬裕一些,再加上價(jià)格便宜硕糊,所以開發(fā)商會選擇修建更大面積的房子院水。
2、大多數(shù)城區(qū)平均面積在[80,110]之間简十。
- 3.3各城區(qū)在售二手房數(shù)量排名前三的小區(qū)檬某。
new_df.groupby(['district','village']).count().reset_index().groupby('district').apply(lambda x:x.sort_values('area',ascending=False)[:3])
04房價(jià)影響因素探究
- 4.1房價(jià)與地理位置的關(guān)系:
new_df.groupby('district').mean().unit_price.sort_values(ascending=False).plot.bar()
plt.title('房價(jià)與不同地理位置的關(guān)系')
- 不同城區(qū)的房價(jià)顯然存在一定的差異,平均單價(jià)最高的是黃浦區(qū)9萬螟蝙,最低的是奉賢區(qū)3萬恢恼。
- 4.2房價(jià)與戶型的關(guān)系:
fig,axes=plt.subplots(2,1,figsize=(12,8),sharex=True)
axes0,axes1=axes.flatten()
count_house_type=new_df.groupby('house_type').count().query('area>100')
count_house_type.area.plot.bar(ax=axes0)
axes0.set_title('不同戶型的房源數(shù)量')
new_df[new_df.house_type.isin(count_house_type.index)].groupby('house_type').unit_price.mean().plot.bar()
axes1.set_title('不同戶型的平均單價(jià)')
- 市場上以2室1廳、2室2廳胰默、3室2廳的戶型房子數(shù)量居多场斑,這三種戶型的房子單價(jià)處于整體單價(jià)的平均線水平漓踢;而1室2廳、2室0廳漏隐、1室0廳的房子喧半,由于房子面積小,總價(jià)不會太貴青责,相對來說經(jīng)濟(jì)壓力負(fù)擔(dān)小一些挺据,從而受到很多人的喜歡,并且市場上這種戶型的房子數(shù)量相對較少脖隶,在這兩個因素影響下導(dǎo)致此類小戶型的房子單價(jià)相對其他大戶型的較高扁耐,1室2廳的房子甚至平均單價(jià)高達(dá)7.3萬。
- 4.3房價(jià)與樓層的關(guān)系
# 過濾樓層存在缺失值的行
group_floor=new_df[new_df.floor.isin((new_df.groupby('floor').area.count()>100).index)].groupby('floor')
fig,axes=plt.subplots(2,1,figsize=(16,8))
axes0,axes1=axes.flatten()
group_floor.unit_price.count().plot.bar(ax=axes0)
axes0.set_title('不同樓層的房源數(shù)量')
group_floor.unit_price.mean().plot.bar(ax=axes1)
axes1.set_title('不同樓層的平均單價(jià)')
- 從以上圖形可以看出产阱,市場上6樓的房子數(shù)量最多婉称,其單價(jià)在鄰近低樓層中最高,約6.8萬心墅;從20層到38層酿矢,隨著樓層的增加,其單價(jià)也在上漲怎燥;之后單價(jià)隨樓層的變化波動很大瘫筐,應(yīng)該是由于40層之后,數(shù)據(jù)樣本數(shù)量比較少铐姚,容易產(chǎn)生較大的誤差策肝,因此40層之后的樓層單價(jià)與樓層的關(guān)系不進(jìn)行研究。
- 4.4房價(jià)與朝向的關(guān)系:
new_df['toward']=new_df.toward.str.replace("\(進(jìn)門\) ",'朝')
toward_list=list(['朝東','朝東北','朝東南','朝北','朝西北','朝西','朝西南','朝南'])
drop_toward=new_df[new_df.toward.isin(toward_list)]
group_toward=drop_toward.groupby('toward')
fig,axes=plt.subplots(2,1,figsize=(12,8))
axes0,axes1=axes.flatten()
group_toward.unit_price.count().plot.bar(ax=axes0)
axes0.set_title('不同朝向的房源數(shù)量')
group_toward.unit_price.mean().plot.bar(ax=axes1)
axes1.set_title('不同朝向的房子單價(jià)')
- 由上圖可知隐绵,朝向?qū)Ψ績r(jià)是有一定影響的之众,其中朝向南面(東南、西南依许、南)的房子單價(jià)會稍高一些棺禾,且朝南的房子數(shù)量遠(yuǎn)多于其他朝向的,這符合我國的一般房屋建筑朝向偏好峭跳,畢竟朝向南面的房屋采光好膘婶,而且在沿海地帶,夏天有東南風(fēng)蛀醉,房子會比較通風(fēng)悬襟;
- 4.5房價(jià)與建筑年代的關(guān)系:
groupby_time=new_df.groupby('construction_time')
fig,axes=plt.subplots(2,1,figsize=(12,8))
axes0,axes1=axes.flatten()
groupby_time.unit_price.count().plot(ax=axes0)
axes0.set_title('不同年代的房子數(shù)量')
groupby_time.unit_price.mean().plot(ax=axes1)
axes0.set_title('不同年代的房子單價(jià)')
- 1、在改革開放之后拯刁,上海房子建筑數(shù)量逐漸上升脊岳,尤其在1995年左右,上海房子快速增長;同樣2005年割捅,也呈現(xiàn)快速增長奶躯。所以說在1995年和2005年是上海房屋修建的高峰期
- 2、建筑年代與房子總價(jià)平均值棺牧、單價(jià)平均值的變化趨勢基本一樣巫糙,在1950年代前的房子其總價(jià)和單價(jià)都高于在后期建筑的房子,分析原因是:在1950前建筑的房子基本都處于中心位置颊乘,地位位置非常好参淹,所以導(dǎo)致價(jià)格比較貴。
- 3乏悄、在2015后之后建筑的房子也呈現(xiàn)上升的趨勢浙值,這與目前房價(jià)不斷升高的趨勢是吻合的。
-
本文總結(jié):
1檩小、本文首先對上海二手房價(jià)格开呐、數(shù)量及各區(qū)域房源分布進(jìn)行分析,得出上海房價(jià)平均在6萬元左右规求,其中黃埔區(qū)以平均單價(jià)9萬排名上海第一筐付,緊接是徐匯區(qū)7.9萬,長寧7.5萬阻肿,而奉賢區(qū)最上海房價(jià)最便宜的區(qū)域瓦戚,平均單價(jià)僅3萬;同時丛塌,也發(fā)現(xiàn)上海房屋面積平均為96平方米较解,其中青浦區(qū)由于屬于郊區(qū),土地資源相對充裕且單價(jià)不高赴邻,其平均房屋面積為157平方印衔,遠(yuǎn)大于其他城區(qū);
2姥敛、接著奸焙,通過二手房數(shù)據(jù)的區(qū)域、戶型彤敛、樓層忿偷、朝向及建筑年代特征進(jìn)行分析,探索各因素對房價(jià)的影響臊泌。結(jié)果表明,不同的區(qū)域揍拆、不同的戶型渠概、不同的樓層、不同的朝向和不同的建筑年代都會使得房子單價(jià)不一樣,樓層在6層的低樓層房子播揪、朝向南面較為受歡迎贮喧,房價(jià)也是相對較貴。