某地区房地产数据可视化分析

文章指导如何使用seaborn对房地产数据进行可视化,包括分析离地铁站距离与房价的关系,商店数量对房价的影响,交易年份分布,以及房屋年龄等特征的箱线图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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")

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值