基于房屋数据的房价相关性分析(含python代码)

本文用到的美国房屋数据:

链接:https://pan.baidu.com/s/1wrkzFF87A_Emgid_s7K3aA
提取码:2j77 

内含两个文件:

data_train.csv:训练集数据,包含房价等81个指标;

data_test.csv:测试集数据,不包含房价;

文章目录

前言

二、分析各指标与房价的相关性

1.主要指标与房价的相关性

1.1 居住面积

1.2 地下室总面积

1.3 材料和质量

1.4 所在街区

1.5 施工日期

2. 查看各指标间的相关性(热力图)

总结


前言

本篇文章研究的是影响房价的因素,数据是美国房屋数据,主要是通过分析各项指标的相关性,得出结论。

下一篇文章将是关于房价预测的相关内容。


一、数据预览

导入包:

import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
import math
from scipy import stats
from scipy.stats import norm
import seaborn
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline

导入数据:

df_train = pd.read_csv('./data/data_train.csv',encoding='gbk')
df_train​

显示81个指标,分别为住宅类型、地下室面积、屋顶类型、卧室数…… 

房价数据的分布:

打印各分位数和均值标准差,画出图像;

print(df_train['房价'].describe())
print("\nSkewness: %f" % df_train['房价'].skew())
print("Kurtosis: %f" % df_train['房价'].kurt())
myfont=FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf')
seaborn.set(font=myfont.get_name())
plt.figure(figsize=(16, 8),dpi=600)
plt.ylabel('频数')
plt.title('房价分布')
seaborn.distplot(df_train['房价'],kde=False,hist_kws={"label":"频数"})
plt.legend()
#kde=Ture画出概率密度图像,概率分布是概率密度的积分

 

图像为右偏,右边面积大,众数右侧的人数多就是右偏;

二、分析各指标与房价的相关性

1.主要指标与房价的相关性

1.1 居住面积

通过绘制散点图,观察到居住面积与房价大致成正比且相关性较强:

data = pd.concat([df_train['房价'], df_train['居住面积']], axis=1)
plt.figure(figsize=(16, 8),dpi=600)
seaborn.scatterplot(data['居住面积'],data['房价'])

1.2 地下室总面积

通过绘制散点图,观察到居住面积与房价大致成正比,有些房屋没有地下室:

data = pd.concat([df_train['房价'], df_train['地下室总面积']], axis=1)
plt.figure(figsize=(16, 8),dpi=600)
seaborn.scatterplot(data['地下室总面积'],data['房价'])

1.3 材料和质量

材料和质量是按照等级划分的,通过箱线图的展示,可以看到质量越高房价也越高;

箱线图从上到下的五条横线分别代表最大值,四分之三分位数、中位数、四分之一分位数和最小值。剩余的点是离群点。离群点是指比Q3大1.5倍的IQR(Q3-Q1)和比Q1小1.5倍的IQR的值。

data = pd.concat([df_train['房价'], df_train['材料和质量']], axis=1)
plt.figure(figsize=(16, 8),dpi=600)
seaborn.boxplot(data=data,x='材料和质量', y="房价")

1.4 所在街区

作箱线图,查看街区与房价的关系,不同街区的房子价格差异明显。

data = pd.concat([df_train['房价'], df_train['街区']], axis=1)
plt.figure(figsize=(16, 8),dpi=600)
plt.xticks(rotation=90)
seaborn.boxplot(data=data,x='街区', y="房价" )

1.5 施工日期

查看原施工日期与房价之间的关系,随原施工日期的变化,房价呈现两头高中间低的趋势。

# 拼接两列
data = pd.concat([df_train['房价'], df_train['原施工日期']], axis=1)
plt.figure(figsize=(16, 8),dpi=600)
# 横坐标90度旋转
plt.xticks(rotation=90)
# 绘制“房价”,“施工日期”箱线图
seaborn.boxplot(data=data,x='原施工日期', y="房价")

2. 查看各指标间的相关性(热力图)

通过热力图的展示,查看所有数值型特征之间的相关性,可以进行相关性对比,颜色越深相关性越强,指标与自身的相关性都是1,可以看到一楼面积、二楼面积、地下室面积间的相关性比较强,从热力图中可以分析出很多结果,例如:房价与材料和质量相关性强,与厨房数量相关性低。

corrmat = df_train.corr()
plt.figure(figsize=(16, 8),dpi=600)
plt.rcParams['axes.unicode_minus'] = False
#去除负号前面的小方框
seaborn.heatmap(corrmat,square=True,cmap='YlGnBu',xticklabels=True,yticklabels=True)

或许观察颜色并不很方便,所以直接把相关性数值标上去,更加直观;

从上述特征中,找出与房价的相关系数排名靠前的10个特征,画出这10个特征之间的热力图:

k = 10
cols = corrmat.nlargest(k, '房价')['房价'].index
cm = np.corrcoef(df_train[cols].values.T)

plt.figure(figsize=(16, 8),dpi=600)
hm = seaborn.heatmap(cm, annot=True, square=True, fmt='.2f', annot_kws={'size': 7}, 
                 yticklabels=cols.values, xticklabels=cols.values,cmap='YlGnBu')

 上述结果:材料质量,居住面积,车库车位数量等特征与房价有较强的相关性


总结

本文进行了一些可视化,通过图像查看指标间的相关性,可以分析出一些结果,接下来我会继续基于此数据集,进一步分析数据并进行房价预测。

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值