某地区房地产数据可视化分析
某地区房地产商对近几年的房屋交易情况进行了统计,并将统计结果存放在房价特征关系表(house_price.npz)中,数据共414条,其特征包括交易年份、房屋年龄、离地铁站的距离、附近的商店个数和单位面积的房价。为了更好地查看近几年的房屋销售情况以及了解房屋相关特征与单位面积的房价间的关系,需要对房价特征关系表的数据进行可视化展示(通过seaborn实现),其主要步骤如下。(4)创建新画布,在子图
1. 需求说明
某地区房地产商对近几年的房屋交易情况进行了统计,并将统计结果存放在房价特征关系表(house_price.npz)中,数据共414条,其特征包括交易年份、房屋年龄、离地铁站的距离、附近的商店个数和单位面积的房价。房价特征关系表的部分数据如表1所示。
表1 房价特征关系表的部分数据
2. 作业要求
为了更好地查看近几年的房屋销售情况以及了解房屋相关特征与单位面积的房价间的关系,需要对房价特征关系表的数据进行可视化展示(通过seaborn实现),其主要步骤如下。
(1)读取房价特征关系表(house_price.npz),绘制离地铁站的距离与单位面积的房价的散点图,并对其进行分析。
(2)创建新画布,将附近的商店个数划分为“0~3”“4~7”“8~10”3个区间,并根据个数贴上对应标签:“较少”“中等”“较多”。分别计算3个区间下单位面积的房价的均值,绘制附近商店的个数与单位面积的房价的柱形图,并进行分析。
(3)创建新画布,根据交易年份绘制饼图,并查看交易年份的分布情况。
(4)创建新画布,在子图上分别绘制房屋年龄、离地铁站的距离、附近商店的个数、单位面积的房价4个特征的箱线图,查看是否存在异常值。
3. 作业实现源代码和执行结果
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
path ='house_price.npz'
hou = np.load(path,allow_pickle=True)
# (1)读取房价特征关系表(house_price.npz),绘制离地铁站的距离与单位面积的房价的散点图,并对其进行分析
arr_0 = hou['arr_0']
arr_1 = hou['arr_1']
sns.set(style='darkgrid')
x=[]
y = []
for i in range(len(arr_1)):
x.append(arr_1[i][2])
y.append(arr_1[i][4])
fig = plt.figure(figsize=(6,6))
data_plot = pd.DataFrame({"distance":x, "area":y})
# data_plot = pd.DataFrame({"离地铁站的距离":x, "area":y})
sns.scatterplot(x = "distance", y = "area", data=data_plot)
plt.show()
# (2)创建新画布,将附近的商店个数划分为“0~3”“4~7”“8~10”3个区间,并根据个数贴上对应标签:
# “较少”“中等”“较多”。分别计算3个区间下单位面积的房价的均值,绘制附近商店的个数与单位面积的房价的柱形图,并进行分析。
arr_0 = hou['arr_0']
arr_1 = hou['arr_1']
sns.set(style='darkgrid')
x=[]
y = []
for i in range(len(arr_1)):
x.append(arr_1[i][3])
y.append(arr_1[i][4])
x=pd.cut(x,bins=[0,3,7,10],labels=["little","better","more"])
data_plot = pd.DataFrame({"number":x, "price":y})
fig = plt.figure(figsize=(6,6))
sns.barplot(palette="Blues")
ax = sns.barplot(x="number",
y="price",
data=data_plot,
palette="Blues")
plt.show()
numbergroup= data_plot.groupby('number')
numbergroup.mean()
# (3)创建新画布,根据交易年份绘制饼图,并查看交易年份的分布情况。
arr_0 = hou['arr_0']
arr_1 = hou['arr_1']
sns.set(style='darkgrid')
x=[]
for i in range(len(arr_1)):
x.append(arr_1[i][0])
x1 = pd.DataFrame({"years":x})["years"].value_counts(ascending=True).to_frame()
labels = x1.index
fig = plt.figure(figsize=(6,6))#创建新画布
colors = sns.color_palette('pastel')
plt.pie(x1,labels = labels,autopct='%.2f%%', colors = colors)
plt.title("Distribution of years")
plt.show()
# (4)创建新画布,在子图上分别绘制房屋年龄、离地铁站的距离、附近商店的个数
# 、单位面积的房价4个特征的箱线图,查看是否存在异常值。
arr_0 = hou['arr_0']
arr_1 = hou['arr_1']
sns.set(style='darkgrid')
x=[]
y=[]
z=[]
j=[]
for i in range(len(arr_1)):
x.append(arr_1[i][1])
y.append(arr_1[i][2])
z.append(arr_1[i][3])
j.append(arr_1[i][4])
# ax1=sns.boxplot(y=x)
# ax2=sns.boxplot(y=y)
# ax3=sns.boxplot(y=z)
# ax4=sns.boxplot(y=j)
fig, axes = plt.subplots(2, 2,figsize=(5,5))
fig.subplots_adjust(hspace=0.4)
sns.boxplot(x, ax = axes[0][0])
sns.boxplot(y, ax = axes[0][1])
sns.boxplot(z, ax = axes[1][0])
sns.boxplot(j, ax = axes[1][1])
axes[0][0].set_title("House age")
axes[0][1].set_title("Metro distance")
axes[1][0].set_title("Number of stores")
axes[1][1].set_title("Unit area price")
plt.suptitle("Main")
|
更多推荐
所有评论(0)