海口二手房-数据分析-python

2018-10-31  本文已影响0人  rrroi

背景

2018年国家政策下达—海南全岛建立自由贸易区,再加上限购政策,海南房价必将有所变动。

分析主题

该篇主要分析海口二手房的价格。

数据来源及使用工具

数据是用八爪鱼从安居客上爬下来的。推荐使用八爪鱼,比较方便简单。

处理分析工作用的是jupyter

数据清理

1.首先读取数据,查看数据
data=pd.read_excel('海口二手房201808交易信息.xlsx')
data.head(3)
房屋描述 建筑面积(平方米)    小区  \
0  白沙门公园  珍珠裕苑 2房1厅带阳台  采光好     68平方米  珍珠裕苑   
1    秀英区 水晶城 3房2厅2卫 毛坯 南北通透    117平方米   水晶城   
2   美湖美舍:凤翔东路,一线湖景精装两房,南北通透     74平方米    暂无   

                                         区域   建造时间  房屋类型 房本年限  \
0  美兰-\n\t\t\t\t\t\t海甸-\n\t\t\t\t\t\t海景路72号  2006年  普通住宅  满二年   
1     龙华-\n\t\t\t\t\t\t滨海-\n\t\t\t\t\t\t海濂路  2012年  普通住宅  满二年   
2          -\n\t\t\t\t\t\t-\n\t\t\t\t\t\t暂无  2013年  普通住宅  满二年   

                         房屋户型 房屋朝向      所在楼层        房屋单价 装修成都   所属公司  \
0  2室\n\t\t\t\t1厅\n\t\t\t\t1卫    北  高层(共13层)  17941 元/m²  精装修   帝城地产   
1  3室\n\t\t\t\t2厅\n\t\t\t\t2卫   南北  中层(共25层)  17948 元/m²   毛坯  瑞熙房地产   
2  2室\n\t\t\t\t2厅\n\t\t\t\t1卫   南北  低层(共15层)  21081 元/m²  精装修  宏兴红房产   

           所属门店                                               核心卖点  \
0        帝城地产总店  核心卖点:位置:海口市美兰区海甸岛六东路户型:2房2厅2阳台1卫面积:68平米售价:122万...   
1  瑞熙房地产金贸分店...  本次为您推荐水晶城186万3室2厅2卫毛坯:恒湿恒温、告别空调暖气时代!恒湿恒温、科技住宅!...   
2  宏兴红房产滨江帝景...  图一线湖景房【座落位置】位于凤翔路【美湖美舍】2014年小区,花园大小区【楼层】电梯5楼总高...   

                                                小区配置  
0  交通便利:周边有公交车站,可方便换乘。商业配套:超市,银行,市场等教育:小学,中学医疗:完善...  
1  位置:小区地理位置,绿化率高,居民素质高配套:有健身器材,小型篮球场,可供小区居民使用车位:...  
2                              小区侧门直达湿地公园,带有泳池,健身设施等  

2.去除数据中的\n、\t
def dropstring(dataframe,name,stringBefore,stringAfter):
    name=dataframe[name]
    name=name.replace(stringBefore,stringAfter)
    return name

data['区域']=data.apply(dropstring,axis = 1,name='区域',stringBefore='\n\t\t\t\t\t\t',stringAfter='')
data['房屋户型']=data.apply(dropstring,axis = 1,name='房屋户型',stringBefore='\n\t\t\t\t',stringAfter='')
房屋描述 建筑面积(平方米)    小区            区域   建造时间  房屋类型 房本年限  \
0  白沙门公园  珍珠裕苑 2房1厅带阳台  采光好     68平方米  珍珠裕苑  美兰-海甸-海景路72号  2006年  普通住宅  满二年   
1    秀英区 水晶城 3房2厅2卫 毛坯 南北通透    117平方米   水晶城     龙华-滨海-海濂路  2012年  普通住宅  满二年   

     房屋户型 房屋朝向      所在楼层        房屋单价 装修成都   所属公司          所属门店  \
0  2室1厅1卫    北  高层(共13层)  17941 元/m²  精装修   帝城地产        帝城地产总店   
1  3室2厅2卫   南北  中层(共25层)  17948 元/m²   毛坯  瑞熙房地产  瑞熙房地产金贸分店...   

                                                核心卖点  \
0  核心卖点:位置:海口市美兰区海甸岛六东路户型:2房2厅2阳台1卫面积:68平米售价:122万...   
1  本次为您推荐水晶城186万3室2厅2卫毛坯:恒湿恒温、告别空调暖气时代!恒湿恒温、科技住宅!...   

                                                小区配置  
0  交通便利:周边有公交车站,可方便换乘。商业配套:超市,银行,市场等教育:小学,中学医疗:完善...  
1  位置:小区地理位置,绿化率高,居民素质高配套:有健身器材,小型篮球场,可供小区居民使用车位:...  
3.去重
data=data.drop_duplicates()
data.iloc[:,0].size #查看一共有多少条数据
数据量.png
4.修改下列名
 下一步要去除数据(建筑面积、房屋单价等)中多余的文字,所以先重新给列命名
data.columns=['房屋描述','建筑面积(平方米)','小区','区域','建造时间(年)',
                        '房屋类型','房本年限','房屋户型','房屋朝向','所在楼层',
                        '房屋单价(元/m²)','装修程度','所属地产公司','所属门店',
                        '核心卖点','小区配置']
5.将数据中多余文字去除
data['建筑面积(平方米)']=data.apply(dropstring,axis = 1,name='建筑面积(平方米)',stringBefore='平方米',stringAfter='')
data['建造时间(年)']=data.apply(dropstring,axis = 1,name='建造时间(年)',stringBefore='年',stringAfter='')
data['房屋单价(元/m²)']=data.apply(dropstring,axis = 1,name='房屋单价(元/m²)',stringBefore='元/m²',stringAfter='')
预览数据.png
6.分割区域字段
name=data['区域'].str.split('-',expand=True)
name.columns=['区','街道名称','街道驻地']
data=data.join(name)
del data['区域']
data.head(2)
预览数据.png
7.修改数据类型
data.dtypes
房屋描述          object
建筑面积(平方米)     object
小区            object
区域            object
建造时间(年)       object
房屋类型          object
房本年限          object
房屋户型          object
房屋朝向          object
所在楼层          object
房屋单价(元/m²)    object
装修程度          object
所属地产公司        object
所属门店          object
核心卖点          object
小区配置          object
区             object
街道名称          object
街道驻地          object
dtype: object
data['建筑面积(平方米)']=data['建筑面积(平方米)'].astype('float16')
data['房屋单价(元/m²)']=data['房屋单价(元/m²)'].astype('float32')
data['建造时间(年)']=data['建造时间(年)'].astype('float16')
data.dtypes

房屋描述           object
建筑面积(平方米)     float16
小区             object
建造时间(年)       float16
房屋类型           object
房本年限           object
房屋户型           object
房屋朝向           object
所在楼层           object
房屋单价(元/m²)    float32
装修程度           object
所属地产公司         object
所属门店           object
核心卖点           object
小区配置           object
区              object
街道名称           object
街道驻地           object
dtype: object
dtype: object
8.增加新列

要修改完单价和建筑面积的数据类型之后,才能用来相乘

data['总价(万元)']=data.apply(lambda x:
                               x['建筑面积(平方米)']*x['房屋单价(元/m²)']/10000,
                               axis=1)
data.dtypes

房屋描述           object
建筑面积(平方米)     float16
小区             object
建造时间(年)       float16
房屋类型           object
房本年限           object
房屋户型           object
房屋朝向           object
所在楼层           object
房屋单价(元/m²)    float32
装修程度           object
所属地产公司         object
所属门店           object
核心卖点           object
小区配置           object
区              object
街道名称           object
街道驻地           object
总价(万元)        float64
dtype: object
9.去除区字段中存在空字符的行
  将空字符用nan替代,再将其去除
data['区'].replace('',np.nan,inplace=True)
data['区'].isna()

0       False
1       False
2        True
3       False
4       False
5       False
6        True

        ...  

Name: 区, Length: 3758, dtype: bool

data.dropna(axis=0, how='any', thresh=None, subset=['区'], inplace=True)

data.iloc[:,0].size

3691
10.去除非海口市的数据
data['区'].value_counts()

美兰     1110
龙华      943
秀英      690
琼山      673
澄迈县     121
文昌市      76
临高县      28
其他       19
儋州市      17
琼海市      14
Name: 区, dtype: int64
data=data[data['区'].isin(['美兰','龙华','秀英','琼山'])]

data['区'].value_counts()

美兰    1110
龙华     943
秀英     690
琼山     673
Name: 区, dtype: int64
data.iloc[:,0].size

3416
11.查看数据中的缺失率
data[data.isna().values==True]
数据预览.png
def showMissingValueInfo(dataframe):   
    df=pd.DataFrame()
    name=[]
    mcount=[]
    mrate=[]
    for i in dataframe.columns:
        MissingCount=len(data)-data[i].count()
        rate='%.2f%%'%((MissingCount/len(data))*100)
        name.append(i)
        mcount.append(MissingCount)
        mrate.append(rate)
        #print(i,'缺失数量:',MissingCount,'缺失比例:',rate)
    df['字段']=name
    df['缺失数量']=mcount
    df['缺失率']=mrate
    return df.T

showMissingValueInfo(data)
数据预览.png

主要是’所属地产公司‘、’所属门店‘的数据缺失,确实量不大,暂不处理。
‘小区配置’用来做词云,丢失一条数据,没有影响。

描述统计分析

data.describe()
统计汇总.png

由图可看出,建筑面积、房屋房屋单价都在合理范围内。

各区域二手房数量

海口市2018年8月各区二手房占比.png

可以看出美兰区、龙华区相对来说二手房数量较多。

fig = plt.figure(figsize=(8,8))
plt.pie(areacount,labels=areacount.index,labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
                                startangle = 90,pctdistance = 0.6,counterclock=False,colors=['#FFE600','#99CC66','#94FF4D','#CCFF99'],
                                textprops={'fontsize':16, 'color': 'black'})
plt.axis('equal')
plt.legend(loc="upper right",fontsize=10,bbox_to_anchor=(1.1,1.05),borderaxespad=1.3)
plt.title("海口市2018年8月各区域二手房占比",size=22)
plt.savefig('海口市2018年8月各区域二手房占比.png')

各区域二手房均价

海口市2018年8月各区二手房房屋均价.png

结合统计汇总,可以看出来海口各区域房价相差不大。

area=data.groupby(['区']).mean()
unitprice=area['房屋单价(元/m²)'].round().sort_values()
unitprice

区
琼山    16503.0
龙华    16728.0
美兰    17099.0
秀英    18154.0
Name: 房屋单价(元/m²), dtype: float32
x=unitprice.index
plt.figure(figsize=(7,5),dpi=80)
unitprice_area=plt.bar(x,unitprice,alpha=1,width=0.4,color='#CCFF99')
plt.ylim([0,20000])
plt.xlabel('区域',size=14)
plt.ylabel('二手房房屋均价(元/m²)',size=14)
plt.yticks(fontsize=14)
plt.xticks(fontsize=14)
plt.title('海口市2018年8月各区二手房房屋均价',size=18)
for x in unitprice_area:
    height = x.get_height()
    plt.text(x.get_x() + x.get_width() / 2, height+1, int(height), ha="center", va="bottom",size=14)
plt.savefig('海口市2018年8月各区二手房房屋均价.png')

房屋类型分布

二手房房屋户型分布.png
df=pd.DataFrame()
df1=pd.DataFrame()
df=data['房屋户型'].value_counts()
df1=df[df>=100]
df1

3室2厅2卫    1052
2室2厅1卫     830
3室2厅1卫     507
4室2厅2卫     250
1室1厅1卫     241
2室1厅1卫     139
2室2厅2卫     109
Name: 房屋户型, dtype: int64
plt.figure(figsize=(10,6),dpi=80)
plt.ylim(0,1200)
plt.xlabel('房屋户型',size=14)
plt.ylabel('数量',size=14)
plt.yticks(fontsize=14)
plt.xticks(fontsize=14)
plt.title('二手房房屋户型分布',size=18)
houseType=plt.bar(df1.index,df1,alpha=1,width=0.5,color='#CCFF99')
for x in houseType:
   height = x.get_height()
   plt.text(x.get_x() + x.get_width() / 2, height+15, int(height), ha="center", va="bottom",size=14)
plt.savefig('二手房房屋户型分布.png')

小区分布

df2=data['小区'].groupby([data['区'],data['小区']]).count()
df2[df2>20].sort_values(ascending=False)

区   小区    
龙华  观澜湖九里     35
琼山  观澜湖观园     32
美兰  宝安江南城     29
琼山  佳元江畔人家    29
龙华  昌茂花园      27
美兰  恒大美丽沙     27
和平城市广场    27
Name: 小区, dtype: int64

面积分布

二手房面积分布图.png
bins=[0, 50, 100, 150, 200, 250, 300, 400, 650]
area_labels=['0-50','50-100','100-150','150-200','200-250','250-300','300-400','400-650']
df1=pd.cut(data['建筑面积(平方米)'],bins,labels=area_labels)
df2=df1.groupby(df1).count()
df2

plt.figure(figsize=(8,5))
houseArea=plt.barh(df2.index,df2,color='#549a36',alpha=1,align='center')
plt.ylabel('面积区间(平方米)',size=16)
plt.xlabel('数量',size=16)
plt.title('二手房面积分布图',size=18)
plt.yticks(fontsize=16)
plt.xticks(fontsize=16)
plt.legend(['数量(间)'], loc='upper right')
plt.grid(color='#CCFF99',linestyle='--', linewidth=0.3,axis='x',alpha=1)
plt.xlim(0,1800)
for x in houseArea:
   width = x.get_width()
   print(x.get_y() + x.get_height() / 2, width+15, int(width))
   plt.text(width+60,x.get_y()+0.15 ,  int(width), ha="center", va="bottom",size=16)
plt.savefig('二手房面积分布图')

聚类分析

house_type = np.array(data[['房屋单价(元/m²)','建造时间(年)', '建筑面积(平方米)']])
#设置质心数量为3
k_model=KMeans(n_clusters=3)
clf=k_model.fit(house_type)
center=pd.DataFrame(clf.cluster_centers_,columns=['房屋单价(元/m²)','建造时间(年)', '建筑面积(平方米)'])
center
聚类分析.png

将此套房源数据进行聚类,可以得出建造年代和房屋价格的关系。

总结

通过数据分析可以得出,龙华区和美兰区的二手房数量偏多,且房价适中。3室2厅2卫和2室2厅1卫的房型数量较多,可见该两套房型的需求也大。面积在50平—100平和100平—150平的数量较多。
若资金有限,可以买较早建造的房源。

上一篇下一篇

猜你喜欢

热点阅读