鏈家二手房數(shù)據(jù)分析

  • 項(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行,其中“朝向”、“建筑時(shí)間”字段存在缺失值,這些缺失值將在后續(xù)分析過程中進(jìn)行處理;
    2、從習(xí)慣角度,將字段中文名重命名為英文;
    3、“樓層”字段,需要進(jìn)行數(shù)據(jù)拆分,分為兩個(gè)字段;
    4、“建筑時(shí)間”字段類型為subject,需要提取年份部分,并存儲為timestamp類型;
# 以下數(shù)據(jù)清洗、整理過程
# 1、重命名字段
df.rename(columns={'小區(qū)名稱':'village','戶型':'house_type','面積':'area','區(qū)域':'district','樓層':'floorlevel','朝向':'toward',
                  '價(jià)格(W)':'total_price','單價(jià)(平方米)':'unit_price','建筑時(shí)間':'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、‘建筑時(shí)間’字段處理
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ù)量,其中崇明、金山、靜安三個(gè)區(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個(gè),分別是松江區(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])

以上是各個(gè)城區(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ù)量相對較少,在這兩個(gè)因素影響下導(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萬;同時(shí),也發(fā)現(xiàn)上海房屋面積平均為96平方米,其中青浦區(qū)由于屬于郊區(qū),土地資源相對充裕且單價(jià)不高,其平均房屋面積為157平方,遠(yuǎn)大于其他城區(qū);
    2、接著,通過二手房數(shù)據(jù)的區(qū)域、戶型、樓層、朝向及建筑年代特征進(jìn)行分析,探索各因素對房價(jià)的影響。結(jié)果表明,不同的區(qū)域、不同的戶型、不同的樓層、不同的朝向和不同的建筑年代都會使得房子單價(jià)不一樣,樓層在6層的低樓層房子、朝向南面較為受歡迎,房價(jià)也是相對較貴。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容