精华内容
下载资源
问答
  • 二手房数据分析报告

    2019-03-10 08:30:39
    二手房数据分析报告用的R语言写的一篇完整地关于房屋价格水平的报告
  • 本篇文章主要是介绍一个北京二手房数据分析的项目,目的是熟悉python数据分析的及可视化的一些常用方法。 数据获取 通过编写python脚本(爬虫)从二手房交易数据网站上获取北京二手房数据集 数据解释 Direction:...

    本篇文章主要是介绍一个北京二手房数据分析的项目,目的是熟悉python数据分析的及可视化的一些常用方法。

    数据获取(已更新)

    通过编写python脚本从二手房交易数据网站上获取北京二手房数据集。

    CSDN下载连接:https://download.csdn.net/download/qq_40507857/13191260

    数据解释

    Direction:方向
    District:区域
    Elevator:电梯
    Floor:楼层
    Garden;花园
    Id:编号
    Layout:布局
    Price:价格
    Region:地区
    Renovation:翻修,革新
    Size:大小
    Year:年限
    ## python源代码
    
    # 1.数据初探
    # 1.1首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn,以及机器学习包sklearn。
    import pandas as pd
    import numpy as np
    import seaborn as sns
    import matplotlib as mpl
    
    import matplotlib.pyplot as plt
    from IPython.display import display
    
    plt.style.use("fivethirtyeight")
    sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
    # % matplotlib inline
    
    # 检查Python版本
    from sys import version_info
    
    if version_info.major != 3:
        raise Exception('请使用Python 3 来完成此项目')
    
    # 1.2然后导入数据,并进行初步的观察,这些观察包括了解数据特征的缺失值,异常值,以及大概的描述性统计。
    # 导入链家二手房数据
    lianjia_df = pd.read_csv('lianjia.csv')
    display(lianjia_df.head(n=2))
    
    # 检查缺失值情况
    lianjia_df.info()
    
    # 1.3初步观察到一共有11个特征变量,Price 在这里是我们的目标变量,然后我们继续深入观察一下。
    # 检查缺失值情况
    lianjia_df.info()
    lianjia_df.describe()
    
    # 添加新特征房屋均价
    df = lianjia_df.copy()
    df['PerPrice'] = lianjia_df['Price'] / lianjia_df['Size']
    
    # 重新摆放列位置
    columns = ['Region', 'District', 'Garden', 'Layout', 'Floor', 'Year', 'Size', 'Elevator', 'Direction', 'Renovation',
               'PerPrice', 'Price']
    df = pd.DataFrame(df, columns=columns)
    
    # 重新审视数据集
    display(df.head(n=2))
    
    # 2 数据可视化分析
    # 2.1 Region特征分析
    
    # 对于区域特征,我们可以分析不同区域房价和数量的对比。
    # 对二手房区域分组对比二手房数量和每平米房价
    # 使用了pandas的网络透视功能 groupby 分组排序。
    # 区域特征可视化直接采用 seaborn 完成,颜色使用调色板 palette 参数,颜色渐变,越浅说明越少,反之越多
    df_house_count = df.groupby('Region')['Price'].count().sort_values(ascending=False).to_frame().reset_index()
    df_house_mean = df.groupby('Region')['PerPrice'].mean().sort_values(ascending=False).to_frame().reset_index()
    
    f, [ax1, ax2, ax3] = plt.subplots(3, 1, figsize=(20, 15))
    sns.barplot(x='Region', y='PerPrice', palette="Blues_d", data=df_house_mean, ax=ax1)
    ax1.set_title('北京各大区二手房每平米单价对比', fontsize=12)
    ax1.set_xlabel('区域', fontsize=12)
    ax1.set_ylabel('每平米单价', fontsize=12)
    
    sns.barplot(x='Region', y='Price', palette="Greens_d", data=df_house_count, ax=ax2)
    ax2.set_title('北京各大区二手房数量对比', fontsize=12)
    ax2.set_xlabel('区域', fontsize=12)
    ax2.set_ylabel('数量', fontsize=12)
    
    sns.boxplot(x='Region', y='Price', data=df, ax=ax3)
    ax3.set_title('北京各大区二手房房屋总价', fontsize=12)
    ax3.set_xlabel('区域', fontsize=12)
    ax3.set_ylabel('房屋总价', fontsize=12)
    
    # plt.show()
    plt.savefig("Region.png")
    
    # 2.2 Size特征分析
    f, [ax1, ax2] = plt.subplots(1, 2, figsize=(15, 10))
    
    # 二手房面积的分布情况
    sns.distplot(df['Size'], bins=20, ax=ax1, color='r')
    sns.kdeplot(df['Size'], shade=True, ax=ax1)
    ax1.set_title('二手房面积的分布情况', fontsize=12)
    ax1.set_xlabel('面积/平米', fontsize=12)
    ax1.set_ylabel('所占比例', fontsize=12)
    
    # 建房时间和出售价格的关系
    sns.regplot(x='Size', y='Price', data=df, ax=ax2)
    ax2.set_title('建房时间和出售价格的关系', fontsize=12)
    ax2.set_xlabel('面积/平米', fontsize=12)
    ax2.set_ylabel('价格', fontsize=12)
    # plt.show()
    plt.savefig('Size.png')
    
    print("房屋面积小于10平米:")
    print(df.loc[df['Size'] < 10])
    
    print("房屋面积大于1000平米:")
    print(df.loc[df['Size'] > 1000])
    
    # 2.3 Layout特征分析
    f, ax1 = plt.subplots(figsize=(20, 20))
    sns.countplot(y='Layout', data=df, ax=ax1)
    ax1.set_title('房屋户型与数量关系', fontsize=12)
    ax1.set_xlabel('数量', fontsize=12)
    ax1.set_ylabel('户型', fontsize=12)
    # plt.show()
    plt.savefig('Layout.png')
    
    # 2.4Renovation特征分析
    print(df['Renovation'].value_counts())
    # 去掉数据中装修特征“南北”
    df['Renovation'] = df.loc[(df['Renovation'] != '南北'), 'Renovation']
    # 画幅设置
    f, [ax1, ax2, ax3] = plt.subplots(1, 3, figsize=(20, 10))
    sns.countplot(df['Renovation'], ax=ax1)
    ax1.set_title('装修特征与数量关系', fontsize=12)
    ax1.set_xlabel('装修特征', fontsize=12)
    ax1.set_ylabel('数量', fontsize=12)
    
    sns.barplot(x='Renovation', y='Price', data=df, ax=ax2)
    ax2.set_title('装修特征与价格关系', fontsize=12)
    ax2.set_xlabel('装修特征', fontsize=12)
    ax2.set_ylabel('价格', fontsize=12)
    
    sns.boxplot(x='Renovation', y='Price', data=df, ax=ax3)
    ax3.set_title('装修特征与数量关系箱型图', fontsize=12)
    ax3.set_xlabel('装修特征', fontsize=12)
    ax3.set_ylabel('数量', fontsize=12)
    # plt.show()
    plt.savefig('Renovation.png')
    
    # 2.5Elevator特征分析
    # 初探数据时,Elevator有大量的缺失值
    misn = len(df.loc[(df['Elevator'].isnull()), 'Elevator'])
    print("电梯的缺失值数量:", misn)
    
    # 由于存在个别类型错误,如简装和精装,特征值错位,故需要移除
    df['Elevator'] = df.loc[(df['Elevator'] == '有电梯') | (df['Elevator'] == '无电梯'), 'Elevator']
    
    # 填补Elevator缺失值
    df.loc[(df['Floor'] > 6) & (df['Elevator'].isnull()), 'Elevator'] = '有电梯'
    df.loc[(df['Floor'] <= 6) & (df['Elevator'].isnull()), 'Elevator'] = '无电梯'
    
    f, [ax1, ax2] = plt.subplots(1, 2, figsize=(20, 10))
    sns.countplot(df['Elevator'], ax=ax1)
    ax1.set_title('有无电梯数量对比', fontsize=15)
    ax1.set_xlabel('是否有电梯')
    ax1.set_ylabel('数量')
    sns.barplot(x='Elevator', y='Price', data=df, ax=ax2)
    ax2.set_title('有无电梯房价对比', fontsize=15)
    ax2.set_xlabel('是否有电梯')
    ax2.set_ylabel('总价')
    # plt.show()
    plt.savefig("Elevator.png")
    
    #2.6 Year特征分析
    grid = sns.FacetGrid(df, row='Elevator', col='Renovation', palette='seismic',size=4)
    grid.map(plt.scatter, 'Year', 'Price')
    grid.add_legend()
    grid.savefig("Year.png")
    
    

    分析结果

    二手房均价:西城区的房价最贵均价大约11万/平,因为西城在二环以里,且是热门学区房的聚集地。其次是东城大约10万/平,然后是海淀大约8.5万/平,其它均低于8万/平。

    二手房房数量:从数量统计上来看,目前二手房市场上比较火热的区域。海淀区和朝阳区二手房数量最多,差不多都接近3000套,毕竟大区,需求量也大。然后是丰台区,近几年正在改造建设,有赶超之势。

    二手房总价:通过箱型图看到,各大区域房屋总价中位数都都在1000万以下,且房屋总价离散值较高,西城最高达到了6000万,说明房屋价格特征不是理想的正太分布。

    1.Region特征分析在这里插入图片描述

    2.Size特征分析

    在这里插入图片描述

    3.Layout特征分析

    在这里插入图片描述

    4.Renovation特征分析

    在这里插入图片描述

    5.Elevator特征分析

    在这里插入图片描述

    6.Year特征分析

    在这里插入图片描述

    展开全文
  • 六、二手房数据分析

    千次阅读 2021-08-16 09:27:41
    六、二手房数据分析 6.1 背景介绍 6.1.1 实验背景 随着房地产市场发展,房价越来越高。为了的到影响房价的增长因素,现在从数据角度出发,分析以下左右房价的因素。 数据介绍 CATE 城区 bedrooms 卧室数量 halls ...

    六、二手房数据分析

    6.1 背景介绍

    6.1.1 实验背景

    随着房地产市场发展,房价越来越高。为了的到影响房价的增长因素,现在从数据角度出发,分析以下左右房价的因素。

    数据介绍

    • CATE 城区
    • bedrooms 卧室数量
    • halls 客厅
    • AREA 面积
    • floor 地面高度,楼层
    • subway 附近是否有地铁
    • school 附近是否有学校
    • price 价格
    • 名称
    • DISTRICT区域

    6.2 载入数据

    6.2.1 导入支持库

    import math
    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    import matplotlib.pyplot as plt
    import statsmodels.api as sm
    from scipy import stats
    from statsmodels.stats.outliers_influence import summary_table
    from pylab import mpl
    import copy
    

    注:若没有statsmodels模块,请到Terminal用如下命令安装

    sudo pip3 install statsmodels
    # Terminal在jupyter首页NEW-Other-Terminal
    

    6.2.2 载入数据

    data_source='../data/housedata.csv'#数据源文件
    df = pd.read_csv(data_source,encoding='UTF8') #读入二手房数据
    

    6.2.3 设置中文显示

    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    

    6.3 数据探查

    6.3.1 查看数据源数据特征

    df_ana = df
    df_ana.head() # 样本取样
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OaeDIcdE-1629077234143)(Matplotlib基础课程.assets/Matplotlib_09_1.png)]

    6.3.2 继续检查样本数量

    len(df_ana) # 样本数量
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vx99izwd-1629077234145)(Matplotlib基础课程.assets/Matplotlib_09_2.png)]

    6.3.3 将价格单位转化为万元

    df_ana['price'] = df_ana['price']/10000
    df_ana.head()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UMvnRrbI-1629077234146)(Matplotlib基础课程.assets/Matplotlib_09_3.png)]

    6.3.4 将CATE(城区)列转化为中文

    list_roma = list(set(df_ana['CATE']))
    list_roma.sort()
    list_roma
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbpIYrsH-1629077234148)(Matplotlib基础课程.assets/Matplotlib_09_4.png)]

    list_chinese = ['朝阳','东城','丰台','海淀','石景山','西城']
    dict_map = dict()
    for i in range(0,len(list_roma)):
        dict_map[list_roma[i]]=list_chinese[i]
    dict_map
    

    img

    用汉字替换拼音:

    for x in dict_map.keys():
        df_ana['CATE'] = df_ana['CATE'].str.replace(x,dict_map[x])
    df_ana.head()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MttjmoX6-1629077234150)(Matplotlib基础课程.assets/Matplotlib_09_6.png)]

    6.3.5 调整城区和楼层的因子水平顺序

    df_ana = df_ana.sort_values(by = ['floor'],axis = 0,ascending = True)
    df_ana.head()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neHNSOuM-1629077234150)(Matplotlib基础课程.assets/Matplotlib_09_7.png)]

    6.4 简单绘图分析

    6.4.1 分析数据源,绘制因变量直方图

    plt.hist(df_ana["price"],color='lightblue')
    plt.xlabel('单位面积房价(万元/平方米)')
    plt.ylabel('频度')
    

    img

    6.4.2 检查售价均值

    df_price_avg = df_ana['price'].mean()
    df_price_avg
    

    img

    6.4.3 检查中位数

    df_price_middle = df_ana['price'].median()
    df_price_middle
    

    img

    6.4.4 检查最大值

    df_price_max = df_ana.sort_values(by='price',ascending=False).head(1)
    df_price_max
    

    img

    6.4.5 检查最小值

    df_price_min = df_ana.sort_values(by='price',ascending=True).head(1)
    df_price_min
    

    img

    6.4.6 绘制房价的分组箱线图

    df_ana.boxplot(column=["price"],by=['CATE'])
    plt.ylabel("单位面积房价(万元/平方米)")
    plt.xlabel("城区")
    

    img

    6.4.7 地铁、学区的分组箱线图

    df_ana.boxplot(column=['price'],by=['subway'],labels=['非地铁房','地铁房'])
    

    img

    df_ana.boxplot(column=['price'],by=['school'],labels=['非学区房','学区房'])
    

    img

    6.4.8 考察房源,客厅、卧室和楼层是否对价格有影响

    df_ana.boxplot(column=['price'],by=['bedrooms'])
    

    img

    考察客厅数量对房价的影响:

    df_ana.boxplot(column=['price'],by=['halls'])
    

    img

    考察楼层高低对房价的影响:

    df_ana.boxplot(column=['price'],by=['floor'])
    

    img

    6.4.9 考察房屋面积和单位价格的关系

    plt.plot(df_ana['AREA'],df_ana['price'],'ro',color='lightblue')
    plt.xlabel('面积(平方米)')
    plt.ylabel('单位面积房价(万元/平方米)')
    plt.show()
    

    img

    6.4.10 建立线性回归模型

    客厅数做因子化处理,变成二分变量,使得建模有更好的解读。

    def fun(x):
        if isinstance(x,int): 
            if x == 0:
                return 0
            else:
                return 1
        else:
            return 0
    style_halls = df_ana
    df_ana['have_halls'] = df_ana['halls'].apply(lambda x: fun(x))
    col_n =['CATE','bedrooms','AREA','floor','subway','school','have_halls']
    

    将变量参数数据化

    y=df_ana.price
    x=pd.DataFrame(df_ana,columns=col_n)  #设置自变量x
    x_dum_cate=pd.get_dummies(x['CATE'])  #对哑变量编码
    x_dum_floor=pd.get_dummies(x['floor'])  #对哑变量编码
    del x['CATE']
    del x['floor']
    x=pd.concat([x,x_dum_cate],axis=1)
    x=pd.concat([x,x_dum_floor],axis=1)
    X=sm.add_constant(x)  #增加截距项
    

    查看数据:

    X.head()
    

    img

    线性回归模型(因变量:单位面积房价):

    model=sm.OLS(y,X)
    result=model.fit()
    result.params  #显示回归系数
    

    img

    result.summary()
    

    img

    y_hat=result.predict(X)
    residuals=y-y_hat
    fig = plt.figure()
    

    6.4.11 验证模型是否符合线性模型

    fg1 = fig.add_subplot(221)
    fg1.set_title('Residuals VS Fitted') 
    plt.xlabel('Fitted Values')
    plt.ylabel('Residuals')
    plt.scatter(y_hat,residuals)
    

    img

    6.4.12 验证房价是否是正太分布

    residuals_n=(residuals-np.mean(residuals))/np.std(residuals)
    sorted_=np.sort(residuals_n)
    yvals=np.arange(len(sorted_))/float(len(sorted_))
    x_label=stats.norm.ppf(yvals)
    fg2 = fig.add_subplot(222)
    fg2.set_title('Normal Q-Q') 
    plt.xlabel('Theoretical Quantiles')
    plt.ylabel('Standardized residuals')
    plt.scatter(x_label,sorted_)
    

    img

    6.5 复杂绘图分析

    6.5.1 换一种方法重新验证模型是否符合线性模型

    residuals_sq=np.sqrt(abs(residuals_n))
    fg3 = fig.add_subplot(223)
    fg3.set_title('Scale-Location') 
    plt.xlabel('Fitted Values')
    plt.ylabel('sqrt(Standardized residuals)')
    plt.scatter(y_hat,residuals_sq)
    

    img

    6.5.2 考察样本异常值

    n=len(y)
    y_m=np.mean(y)
    Lyy=np.sum((y-y_m)**2)
    Hii=1/n+(y-y_m)**2/Lyy
    fg4 = fig.add_subplot(224)  #绘制每个点的库克距离,检测异常点用
    fg4.set_title("Cook's distance") 
    plt.xlabel('Obs number')
    plt.ylabel("Cook's distance")
    plt.plot(Hii.tolist())
    

    img

    6.5.3 取对数后重新做以上验证

    #对房价取对数,得到——y_log
    y_log=df_ana['price'].apply(lambda x:math.log(x))
    #对数房价回归模型
    model=sm.OLS(y_log,X)
    result=model.fit()
    result.params
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXK94rkO-1629077234162)(Matplotlib基础课程.assets/Matplotlib_09_27.png)]

    考察模型参数:

    result.summary()
    

    img

    6.5.4 建立新的交叉对数模型

    X2=copy.deepcopy(X)
    
    X2['丰台_学区']=X2['丰台']*X2['school']
    X2['朝阳_学区']=X2['朝阳']*X2['school']
    X2['东城_学区']=X2['东城']*X2['school']
    X2['海淀_学区']=X2['海淀']*X2['school']
    X2['石景山_学区']=X2['石景山']*X2['school']
    X2['西城_学区']=X2['西城']*X2['school']
    
    #对数房价、城区/学区交叉项回归模型
    model=sm.OLS(y_log,X2)
    result=model.fit()
    residus=result.resid
    result.params
    

    img

    6.5.5 验证交叉对数模型是否正确

    fg = fig.add_subplot(221)
    fg.set_title('Residuals VS Fitted') 
    plt.xlabel('Fitted Values')
    plt.ylabel('Residuals')
    plt.scatter(y_hat,residuals)
    

    img

    6.5.6 验证房价是否是正太分布

    residuals_n=(residuals-np.mean(residuals))/np.std(residuals)
    sorted_=np.sort(residuals_n)
    yvals=np.arange(len(sorted_))/float(len(sorted_))
    x_label=stats.norm.ppf(yvals)
    fg = fig.add_subplot(222)
    fg.set_title('Normal Q-Q') 
    plt.xlabel('Theoretical Quantiles')
    plt.ylabel('Standardized residuals')
    plt.scatter(x_label,sorted_)
    

    img

    6.5.7 取平方根,除去符号影响重新验证模型是否符合线性模型

    residuals_sq=np.sqrt(abs(residuals_n))
    fg3 = fig.add_subplot(223)
    fg3.set_title('Scale-Location') 
    plt.xlabel('Fitted Values')
    plt.ylabel('sqrt(Standardized residuals)')
    plt.scatter(y_hat,residuals_sq)
    

    img

    n=len(y)
    y_m=np.mean(y)
    Lyy=np.sum((y-y_m)**2)
    Hii=1/n+(y-y_m)**2/Lyy
    
    fg4 = fig.add_subplot(224)  #绘制每个点的库克距离,检测异常点用
    fg4.set_title("Cook's distance") 
    plt.xlabel('Obs number')
    plt.ylabel("Cook's distance")
    plt.plot(Hii.tolist())
    

    img

    假设需要在西城区买一套临近地铁的学区房,面积85平米。大概需要多少钱。

    house_new=[1,2,85,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1]
    price_new=np.exp(result.predict(house_new))
    #单价
    price_new
    print('房价预测值为:%.2f'%price_new,'万元/平方米')
    print('房价预测值为:%.2f'%(85*price_new),'万元')
    

    img

    展开全文
  • 链家网东莞二手房数据分析

    千次阅读 2020-04-22 13:13:54
    链家网东莞二手房数据分析1、数据来源2、分析思路3、数据预处理4、用户消费特征分析4-1-1、用户订单数、订单金额的描述性统计4-1-2、用户整体消费分析4-1-3、用户月人均消费分析4-2、用户个人消费分析4-3、用户生命...

    这是本人第二篇数据分析实战项目,使用excel、MySQL和tableau对链家网东莞二手房数据分析,也欢迎大家提出建议,相互交流探讨学习,实现共同进步。

    1、数据来源

    这次数据分析2020.4.7通过爬取链家网东莞二手房数据,数据包含了14个字段,分别area 、title、community、position、tax、total_price、unit_price、hourseType、hourseSize、direction、fitment、floor、built_time、type等字段。

    2、分析思路

    在这里插入图片描述

    3、数据预处理

    通过可以python可以看到数据集包含了21763行数据,共14个方面的数据信息,title、tax、floor、built_time、type存在缺失值,数据描述中可以发现二手房总价total_price最大值达到了4800万元,面积hourseSize最大值达到了15906.50平方米,可以推断出数据集中存在异常值。
    在这里插入图片描述
    下面进行数据清洗及处理。
    (1)由于title、tax、type这个字段对本次分析没有影响,故可以忽略缺失值,保留缺失title字段的数据。
    (2)通过筛选,发现hourseType字段中包含了9条0室0厅的数据,删除此数据。
    (3)由于年份和楼层数包含的信息是后面分析需要用到的,但由于这两个字段无法通过其他数据进行补充缺失值,这里只能将这两个字段为空的数据删除。
    (4)建筑时间built_time中出现2103年的数据,故删除此行数据。
    (5)通过查看筛选数据集,发现0室1厅,0室2厅,1室0厅,1室1厅的户型,面积大于75平方米的二手房中存在大部分是车位、商铺、写字楼的数据,共86条,此类数据不在本次分析的范围内,故也删除。
    (6)通过筛选可以发现二手房朝向direction字段原数据的朝向比较混乱,而且部分朝向不太符合逻辑,故根据原数据将朝向重新划分为东东,南,西,北,东南,东北,西南,西北 8个朝向,对出现的异常数据进行处理,取字符串中第一个朝向作为该条数据的朝向数据。
    (6)针对后期分析的需要,增加片区字段,按照实际情况划分为城区片区、滨海片区、松山湖片区、东部产业园片区、东南临深片区、水乡新城片区。具体划分如下:
    在这里插入图片描述
    (7)提取原数据built_time字段数据的数字部分,通过=- -text()函数改为日期格式。通过datedif函数计算出当前日期距建筑日期的日期差,并增加一个built_age字段。
    (8)floor字段中提取出总楼层数total_floor和楼层高度等级floor_level。

    数据预处理后的数据集如下:
    在这里插入图片描述
    预处理后描述统计如下:
    在这里插入图片描述
    在这里插入图片描述
    通过清洗后的总价-面积散点图可以看出,经过清洗后的二手房数据,价格与面积基本上成呈线性关系,面积越大,价格越高,符合现实情况。

    4、二手房描述性统计

    在这里插入图片描述分析:
    价格角度:全市二手房总价平均值是200万元左右,平均每平方19674.78元,中位数分别是175和18647,均小于平均值,说明存在一小部分二手房价格较高。
    面积角度:二手房平均面积是98平方米,中位数为91,说明全市大部分二手房的面积集中在90平方米到100平方米之间。

    5、房源数量分布

    在这里插入图片描述分析:
    通过房源数据分布可以看出,在采集到的16034条有效数据中,滨海片区的二手房数量最多,共有5523套,占全市二手房数量的34.45%,其次是东南临深片区19.28%、城区片区17.68%、松山湖片区17.23%。
    其中二手房数量前5的镇区分别是虎门镇2530套,厚街镇1580,樟木头1322套,南城区1172套,长安镇1039套,凤岗镇985套。

    6、户型等级和平均面积分布

    6-1、户型等级数量分布

    将二手房按面积的大小分为5类等级,分别为
    极小户型(0~50平方米)、
    小户型(50~100平方米)、
    中等户型(100~150平方米)、
    大户型(150~200平方米)、
    巨大户型(200平方米以上)。

    通过MySQL实现户型类型划分,代码和结果如下:

    select s_id,s_hoursesize,
    (case 
    when s_hoursesize>=0 and s_hoursesize<50 then '极小户型'
    when s_hoursesize>=50 and s_hoursesize<100 then '小户型'
    when s_hoursesize>=100 and s_hoursesize<150 then '中等户型'
    when s_hoursesize>=150 and s_hoursesize<200 then '大户型'
    when s_hoursesize>=200 then '巨大户型' 
    end) s_size_group
    from second 
    

    在这里插入图片描述
    将数据集导入到tableau进行可视化。
    在这里插入图片描述分析:
    通过对面积进行分类可以发现,小户型数量最多,有8064套,占全市二手房数量的50.29%,
    其次是中等户型4145套和极小户型2230套,分别占全市二手房数量25.85%和13.91%,这三种户型比较受欢迎,各片区同样也符合此情况。
    进一步结合单价均值分布图来看,可以发现单价均值较低的3个等级正分别是极小户型、小户型和中等户型,这也符合房价的分布。在考虑单价的同时,结合实用性来考虑,极小户型,由于面积小,不太适合家庭入住,故房源数量和价格对比小户型和中等户型略低一点。

    6-2、总面积均值分布

    在这里插入图片描述分析:
    从总面积分布中可知,除松山湖片区总面积略高于城区片区外,其他分布情况与房源数量分布接近,结合各片区总面积均值分布和各镇区总面积均值分布可看出,松山湖片区中松山湖的总面积均值有136.27平方米,较其他镇区大,而同时城区片区中万江区的总面积均值最低,仅有80.46平方米,故分析可能由于松山湖片区存在相对较多大面积的二手房,城区片区存在较多小面积的二手房。

    7、总价和单价分布

    7-1、全市二手房总价分布

    在这里插入图片描述分析:
    结合总价均值分布图和箱线图可以发现,总价均值第1是松山湖片区,为222.30万元,总价区间为[134,270],中位数为185万元;
    第2是滨海片区,为209.38万元,总价区间为[140,280],中位数为205万元;
    第3是东南临深片区,为195.91万元,总价区间为[110,252],中位数为185万元;
    第4是城区片区,为193.70万元,总价区间为[93,280],中位数为165万元;
    第5是东部产业园片区,为155.42万元,总价区间为[88,190],中位数为133万元;
    第6是水乡新城片区,为153.75万元,总价区间为[115,180],中位数为150万元。
    各片区总价均值中,除水乡新城片区总价均值接近中位数,总价上升较为线性外,其他4个片区的总价均值均高于中位数较多,故有少数较高总价的二手房拉高了总体平均值。
    在这里插入图片描述分析:
    全市二手房总房价的大部分的集中在300万元以内,占全市二手房数量的93.33%,这数据符合现实房价分布情况。
    城区片区、松山湖片区、滨海片区和东南临深片区的二手房总价相对于东部产业园片区和水乡新城片区较高。
    房价均值较高的前15个小区中,集中在松山湖片区、滨海片区、城区片区。

    7-2、全市二手房单价分布

    在这里插入图片描述分析:
    1、片区二手房单价均值的分布中,城区片区、松山湖片区、滨海片区的二手房单价均值均超过20000元,东南临深片区也接近20000元。
    2、结合东莞市的发展城区分布及政策可以发现,城区片区中是全市的中心,作为全市的CBD,房价固然会较高。
    3、松山湖片区是以松山湖为核心的片区,注重高新技术的研发,而且由于华为项目的落户,进一步带动的该片区的房价
    4、滨海片区位于珠三角城市群东西岸交汇处,被明确为粤港澳大湾区特色合作平台、粤港澳协同发展先导区、广深港澳科技创新走廊核心平台,同时滨海片区的GDP占据全市总量20%以上,这也使该片区的房价攀升的重要原因之一。
    5、东南临深片区凭借临深的优势,近几年加强了重大项目的发展,以及由于深圳房价较高外因,有一部分深圳的市民会选择在东南临深片区购房,这也促使了该片区房价紧随城区片区、松山湖片区、滨海片区。

    通过单价均值分布图和箱线图可以了解到,单价均值第1是城区片区,为20977元/平方米,总价区间为[16537,25194],中位数为20400元/平方米;
    第2是松山湖片区,为20703元/平方米,总价区间为[16200,23505],中位数为19047.5元/平方米;
    第3是滨海片区,为20065元/平方米,总价区间为[15556,24643],中位数为19502.5元/平方米;
    第4是东南临深片区,为19689元/平方米,总价区间为[14688,25217],中位数为19500元/平方米;
    第5是水乡新城片区,为14931元/平方米,总价区间为[13429,16357],中位数为15020.5元/平方米;
    第6是东部产业园片区,为14868元/平方米,总价区间为[12000,16839],中位数为14118元/平方米。

    在这里插入图片描述分析:
    全市房价单价分布显示,全市二手房86.25%的单价集中在[10000,26000]之间。
    小区房价单价均值排行在前15的二手房中,同样是集中在集中在松山湖片区、滨海片区、城区片区3个片区。

    8、房价与户型、朝向、地区、建筑时间、建筑高度关系

    8-1、房价与户型关系

    在这里插入图片描述
    分析:
    通过各户型数量分布情况可以看出,全市二手房存在较多的户型类型,其中热门户型分别是3室2厅(6527套)、2室2厅(2576套)、4室2厅(2118套)、1室1厅(1938套),这4种热门户型占全市二手房数量的82%。
    由于部分户型数量较少,经过筛选,将数量不足100的户型排除掉,剩下8类户型,其中热门的户型的单价分别为3室2厅(19172元/平方米)、2室2厅(19206元/平方米)、4室2厅(21863元/平方米)、1室1厅(16335元/平方米),与此同时发现,5室2厅的户型单价均值最高,由于此类户型的数量仅有352套,但单价20000元以上就有217套,这也拉高了此户型的平均单价,故此类户型也可筛选掉。在4种热门户型当中,3室2厅、2室2厅、4室2厅的单价相对3室1厅、2室1厅、1室0厅较高,可以理解为前者能满足大部分人的使用需求,而1室1厅户型在市场上虽然也有一定的数量,但由于此类户型大多适合单身消费者,可能对于拥有家庭的消费者不太满足他们的使用要求,故单价相对会略低一点。由此得出,在一定程度上,房价与户型有关系。

    8-2、房价与朝向关系

    在这里插入图片描述
    分析:
    从分布图中发现,朝南的二手房数据最多,有7364套,其次是东南方向,有3970套,说明这两种朝向的二手房是较为热门的。
    从单价分布图中看到,除了朝南的二手房外,其他朝向的单价均值均未超过20000元/平方米,朝东的单价均值最低为18108元/平方米,其他朝向的单价相差不大,故从数据中反应出,东莞市二手房单价与朝向无密切关系。
    对于居住在东莞的人们可能对朝向要求并不是主要考虑因素。

    8-3、房价与楼层高度关系

    在这里插入图片描述
    分析:
    由价格-楼层高度分布情况图中可以看出,全市二手房集中在低、中、高楼层3个楼层高度,占了99.5%,独栋、上、下叠筛选掉。
    具体分布情况如下:
    低楼层数量为5598套,单价均价值20544万元;
    中楼层数量为4782套,单价均值为19263;
    高楼层数量为5581套,单价19293。
    同时可以发现各楼层单价均值在20000万/平方米左右,说明仅将楼层高度划分为3个等级时,单价和楼层高度没有太大的关系,若能获取到每套二手房所处的具体高度,则可以进一步分析哪些楼层或哪些楼层区间更受欢迎,同时能进一步反映出单价与楼层高度的关系。
    各片区楼层高度数量和单价均值分布图中发现,各片区内高、中、低楼层高度的数量分布分成了两种情况,且单价均值与数量的分布正好成相反关系,城区片区、滨海片区和水乡新城片区是中楼层二手房数量最多,松山湖片区、东南临深片区和东部产业园片区是高楼层二手房数量最多。
    这情况可能是由于楼多价低,楼少价高的原因。

    8-4、房价与地区关系

    在这里插入图片描述
    分析:
    6个片区中,房价单价最高的分别是城区片区的南城区23497元/平方米,
    松山湖片区的松山湖32802元/平方米,
    滨海片区的长安镇25559元/平方米,
    东南临深片区的凤岗镇25368元/平方米,
    水乡新城片区的望牛墩镇16573元/平方米,
    东部产业园片区的黄江镇18811元/平方米。
    通过箱线图可以了解到望牛墩数据量偏少,这也可能导致虽然水乡片区二手房单价最高的是望牛墩,但水乡片区中其他镇区的单价与其相差不大。
    除水乡片区的望牛墩镇,其他5个片区中的最高单价镇区均有较明显的高于同片区其他镇区,而这些排名第一的镇区也确实是对应片区的中心镇区,各方面都存在一定的优势,因此,区域对二手房的单价有一定的影响。

    8-5、房价与二手房楼龄关系

    在这里插入图片描述
    数量-建筑时间分布图中明显发现,由2001年开始,新建的房子在逐年增长,到了2015年到达了峰值,新建房的数量主要集中在2013~2016年之间。
    通过查阅资料得出,出现这情况是因为2000年住建部宣布住房实物分配在全国停止,2007年出台房贷新政,这也给与了房地产行业的一个春天,但到了2016年东莞出台的限购政策,这也给房地产行业一个重创,因此新建房子的数量开始趋于下降的趋势。
    通过单价均值-建筑时间分布折线图和单价均值-楼龄分布图了解到,从1996年开始到2008年,全市二手房价单价趋于上升阶段,但在2008年之后开始趋于21000元/平方米上下波动。
    整体来看房价与二手房楼龄有一定关系,越新的二手房能卖出的价格越高。

    8-6、房价与二手房装修程度关系

    在这里插入图片描述
    分析:
    通过分布图可以看出,虽然精装的二手房在全市的占有量最高,有7526套,占全市二手房数量的46.94%,但各装修程度中,除简装的单价均值略低一点外,剩余的均相差不大,说明对于人们来说,装修程度不是购房考虑的因素之一。

    9、结论

    1、全市二手房房源最多的是滨海片区,占全市二手房数量的34.45%,二手房数量前5的镇区分别是虎门镇2530套,厚街镇1580,樟木头1322套,南城区1172套,长安镇1039套,凤岗镇985套。若要考虑购买二手房,可以考虑这5个镇区,有较多的选择空间。
    2、松山湖片区存在相对较多大面积的二手房,城区片区存在较多小面积的二手房。排除其他因素,若想购买大面积二手房可以重点考虑松山湖片区的,相反,若想购买小空间的则考虑城区片区的二手房。
    3、全市最热门的是小户型(50~100平方米)。
    4、城区片区、松山湖片区、滨海片区二手房单价均值都超过了20000元/平方米。若资金不是太充裕,而又想在东莞购买二手房,排除其他因素,可以考虑在水乡新城片区或者东部产业园片区购买。
    5、全市热门户型分别是3室2厅(6527套)、2室2厅(2576套)、4室2厅(2118套)、1室1厅(1938套),占据了全市二手房的82%。
    6、楼层高度、二手房朝向和二手房装修程度向并不是主导人们购买二手房的主要因素。
    7、从1996年开始到2008年,全市二手房价单价趋于上升阶段,但在2008年之后开始趋于21000元/平方米上下波动。整体来看房价与二手房楼龄有一定关系,越新的二手房能卖出的价格越高。

    展开全文
  • 二手房数据分析项目流程 1.首先导入数据集,查看数据集是否有缺失值 2.显示每一项的总数,查看是否有缺失值(发现Elevator列有大量数据缺失) 3.将数据用百分比形式进行展示 发现疑惑点:Ⅰ:有2平方的房子吗?Ⅱ:...

    二手房数据分析项目流程

    1.首先导入数据集,查看数据集是否有缺失值
    在这里插入图片描述2.显示每一项的总数,查看是否有缺失值(发现Elevator列有大量数据缺失)
    在这里插入图片描述
    3.将数据用百分比形式进行展示
    发现疑惑点:Ⅰ:有2平方的房子吗?Ⅱ:存在57层的居民楼吗?
    在这里插入图片描述4.因为数据没有每平方价钱,就自己添加一项,方便接下来作图让数据展现更加清晰。
    把不重要的列进行去除,并根据个人习惯将数据重新排。
    在这里插入图片描述5.做可视化
    (1)Region(区域)特征分析;先进行区域分组;房数量和每平米房价
    在这里插入图片描述 (2)Size(平方数)特征分析;建房时间分布;建房时间与价格分布
    在这里插入图片描述通过图发现问题:
    面积不到10平米,价格超出10000万;
    一个点面积超过了1000平米,价格很低;
    需要移除不需要内容
    在这里插入图片描述 (3)对Layout(户型)特征进行分析
    在这里插入图片描述 (4)对Renovation(装修)特征分析
    在这里插入图片描述(5)Elevator(电梯)分析
    发现问题:但是电梯数据有大量缺失,首先找到缺失值数量,因为缺失值为字符串,无法取平均数;可以假设6楼以上都有电梯,小于或等于6楼的没有电梯。
    在这里插入图片描述 (6)Floor(层数)分析
    在这里插入图片描述6.总结:
    整体项目就是从清洗数据,然后做一些稍微的修改,最后做数据可视化,去观察数据表达的内容。因为数据集是现成的,所以整个项目做起来比较简单。希望下一次可以做从爬取数据到最后可视化整个完成的流程。

    展开全文
  • 北京市房地产市场是我国房地产市场中最为发达,也是最具有代表性的房地产市场之一。 什么样的因素影响着北京市商品房的销售...本案例收集了北京城内六区16210套在售二手房相关数据,试图揭开影响房价因素的神秘面纱!
  • 东莞二手房数据分析

    2018-04-21 19:59:40
    操作时间:2017年9月之前在公众号号看到一篇某地二手房数据爬取分析的帖子,有感而发,正好项目地在东莞,也做了一个东莞二手房数据爬取及分析的帖子。(后附代码)数据获取通过百度‘东莞二手房’,直接查看前面的...
  • 北京二手房数据分析

    2020-06-07 15:20:53
    项目数据来源于链家北京二手房数据。 数据预处理 首先导入分析过程中可能运用到的函数包,并读取显示前10行数据。 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib as ...
  • 武汉链家二手房数据分析

    千次阅读 2019-04-23 20:51:07
    爬取链家二手房武汉地区的成交数据,共23292条记录,利用Excel、MySQL、Power BI等工具对影响武汉二手房交易价格的因素进行了分析 分析思路 分析目的 武汉哪个区的二手房交易最多? 哪种户型的房子最受欢迎? 武汉...
  • 2020链家杭州二手房数据分析(截止到2020年09月07日) 1 项目背景 通过python爬去链家杭州二手房的数据,网址为:https://hz.lianjia.com/ershoufang/。可以发现,链家把杭州分为15个区域。其中,截止到2020年09月07...
  • 北京链家二手房数据分析

    千次阅读 2018-06-10 14:09:20
    首先我们需要将链家二手房数据抓取下来,用我们上课学的内容,很容易实现(bs4,re,urllib,搞定!): import re import csv from bs4 import BeautifulSoup from urllib import request # 成功打开页面时返回...
  • df5 = df[df['朝向'].isin(b)] ana_value(df5,'朝向')

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,262
精华内容 2,104
关键字:

二手房数据分析