对利用Python爬取到的房价信息做数据可视化(附完整代码)

2023-11-17

      大家好,我是带我去滑雪,每天教你一个小技巧!

  1、数据展示   

本文利用Python爬取到的房价信息做数据可视化,爬取数据的文章见:

利用Python爬取房价信息(附代码)_用python爬取房价数据_带我去滑雪的博客-CSDN博客

      所爬取的指标有小区名称、房屋位置、房屋户型、房屋面积、房屋朝向、房屋装修情况、有无电梯、楼层位置、附件有无地铁、关注度人数、看房次数、每平方米价格、房屋总价等指标,具体数据展示见表1,表2。

表1 python爬取数据展示(一)

编号

标题

小区名称

房屋位置

房屋户型

房屋面积(m2

房屋朝向

1

鸿城花园 精致两房 南向高楼层

鸿城花园

市桥

2室2厅

78.6

西南

2

岭南新世界 带空中花园实用

岭南新世界

白云大道北

4室2厅

98

西南

3

隆康花园 2室1厅 255万

隆康花园

白云大道南

2室1厅

58.1

西南

4

南北对流 楼层好 视野宽阔 采光充足

荷景花园一区

沙湾

4室2厅

118

东南

 

表2 python爬取数据展示(续一)

编号

房屋装修情况

有无电梯

楼层位置

附近有无地铁

关注度(人数)

看房次数

每平方米价格(元)

房屋总价(万元)

1

其他

有电梯

高楼层

有地铁

58

14

26718

210

2

其他

有电梯

低楼层

有地铁

2337

18

44184

433

3

简装

有电梯

中楼层

有地铁

25

18

43890

255

4

精装

无电梯

中楼层

无地铁

2106

6

16526

195

5

简装

无电梯

高楼层

无地铁

1533

7

15354

150

6

简装

有电梯

中楼层

有地铁

47

5

49164

570

2、数据预处理

       数据预处理是指在数据集中发现不准确、不完整或者不合理的数据,通过数据预处理,对这些数据进行一定的去重、修补、纠正或移除,将原始数据转化成分析算法适用的形式,以此提高数据质量。由于爬取的数据中包含类别型数据,为了方便后面数据分析,本文对分类型数据进行了分别赋值,处理后的变量表见表3,处理后的数据集部分见表4。

表3 变量表

属性

解释

类型

变量名

WSSL

房屋的卧室数量(个)

连续值

x1

KTSL

房屋的客厅数量(个)

连续值

x2

MJ

房屋面积(平方米)

连续值

x3

FWZXQK

房屋装修情况

离散值,0=其他;1=毛坯;2=简装;3=精装

x4

YWDT

有无电梯

离散值,0=无电梯;1=有电梯

x5

LCWZ

房屋所在楼层位置

离散值,0=低楼层;1=中楼层;2=高楼层

x6

FJYWDT

房屋附近有无地铁

离散值,0=无地铁;1=有地铁

x7

GZD

关注度(人次)

连续值

x8

KFCS

看房次数

连续值

x9

PRICE

每平方米价格(元)

连续值

y

TOTAL PRICE

房屋总价(万元)

连续值

y1

表4 经过数据预处理后的数据集

编号

x1

x2

x3

x4

x5

x6

x7

x8

x9

y

y1

1

2

2

78.6

0

1

2

1

58

14

26718

210

2

4

2

98

0

1

0

1

2337

18

44184

433

3

2

1

58.1

2

1

1

1

25

18

43890

255

4

4

2

118

3

0

1

0

2106

6

16526

195

5

3

1

97.7

2

0

2

0

1533

7

15354

150

6

3

2

115.94

2

1

1

1

47

5

49164

570

7

3

2

102.72

2

1

0

1

80

19

61332

630

8

3

2

102.72

2

1

0

1

80

19

61332

630

9

2

2

73.3

2

1

0

1

873

21

42292

310

10

3

2

92

2

1

1

0

64

14

22066

203

2981

2

1

80.3

2

1

1

1

8

0

46700

375

2982

2

2

64.81

2

1

1

1

2

0

41352

268

2983

2

1

57.26

0

0

0

1

0

0

41041

235

2984

2

1

75.38

2

1

2

0

0

0

39799

300

3、数据分析

3.1 词云分析

        词云是文本大数据可视化的一种重要方式,该方法可以将文本信息中重复出现的词语进行高亮展示,使浏览文本信息的人们可以一眼看到关键信息。本文利用python对表1中的标题文本信息进行词云分析,输出结果见图1所示。

6a686c46b8ef4c0b95b711fe939ef2ce.png

       通过图1可以发现,在某网站上所挂楼房标题词中最多的是中间楼层、精装修、看房方便、采光好、近地铁、楼层好等字样,说明可能具有这些特点的房子更能吸引买家的注意,进而影响房屋的价格。

绘制词云图

import pandas as pd

file = open(r'\title.xlsx','rb')

data = pd.read_excel(file)

data.columns

title = data['标题']

import numpy as np

import os

lis =  np.array(title)

lis = lis.tolist()

lis[:5]

str1 = "".join(lis)

item_main = str1.strip().replace('span','').replace('class','').replace('emoji','').replace(' ','')

def save_fig(fig_id, tight_layout=True):

    path = os.path.join(r" E:\工作\硕士\学习\统计软件python\期末作业", fig_id + ".png")

    print("Saving figure", fig_id)

    if tight_layout:

        plt.tight_layout()

    plt.savefig(path, format='png', dpi=300)

import jieba

wordlist = jieba.cut(item_main,cut_all=True)

word_space_split =" ".join(wordlist)

type(word_space_split)

import matplotlib.pyplot as plt

from wordcloud import WordCloud,ImageColorGenerator

import PIL.Image as Image

coloring = np.array(Image.open(r'\Desktop\图片.jpg'))

my_wordcloud = WordCloud(background_color='white',max_words=200,mask=coloring,max_font_size=60,random_state=42,

scale=2,font_path=r'C:\Windows\Fonts\simkai.ttf').generate(item_main)

image_colors = ImageColorGenerator(coloring)

plt.imshow(my_wordcloud.recolor(color_func=image_colors))

plt.imshow(my_wordcloud)

plt.axis('off')

save_fig('my_wordcloud_fangjia')

plt.show()

3.2 描述性分析

        利用python对搜集到的数据进行描述性分析,为了更加清晰的展示数据,分别绘制了饼图、条形图、嵌套环形图等图形,绘制图形的python代码见附件,其结果见图2、图3、图4、图5、图6所示。

ffb5c17893a64ebdad194fb3d620ba47.png

ab80c1bcd9fd4c77bd87505fe1ad9c6e.png

84cfe3ef3baf44089d92dc9a562a8393.png

5390367cc13c4bfb8c1e6a269c2f5fb7.png

 3.3 相关性分析

    (1)房屋面积与房屋总价

a3525e4605294b50a182fa2ed897419e.png

    (2)房屋总价与关注度人数

27440b8b3af641abb3c0223b957c167f.png

    (3)房屋卧室个数与房屋总价

fed173309aa04fc998294436a7fc297e.png

 

图2房屋装修情况占比饼状图

import numpy as np

import matplotlib.pyplot as plt

data = pd.read_csv(r"E:\工作\硕士\学习\统计软件python\期末作业\qxhsj.csv")

plt.rcParams['font.sans-serif'] = ["Fangsong"]

plt.rcParams['axes.unicode_minus'] = False

# 设置画布大小

plt.figure(figsize=(12,6))

figure,axes = plt.subplots(1,1,figsize = (6,6),dpi = 120)

# 构造数据

y = [1139,33,891,921]

label=["其他", "毛坯", "简装", "精装"]

# 绘图

plt.pie(y,

        labels=label, #

        autopct='%.2f%%', # 让标签以百分比形式显示,且精确到两位小数

        labeldistance = 1.1,

        pctdistance = 0.9,

#         shadow = True,

        radius = 1, 

        startangle = 90, 

        counterclock = False 

       )

plt.title("房屋装修情况占比",fontsize = 12)

plt.savefig(r"E:\工作\硕士\学习\统计软件python\matplotlib饼图.jpg", format="png")

# 可视化呈现

plt.show()

图3房屋所在楼层位置比例饼状图

import numpy as np

import matplotlib.pyplot as plt

data = pd.read_csv(r"E:\工作\硕士\学习\统计软件python\期末作业\qxhsj.csv")

plt.rcParams['font.sans-serif'] = ["Fangsong"]

plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(12,6))

figure,axes = plt.subplots(1,1,figsize = (6,6),dpi = 120)

y = [806,1143,1036]

label=["低楼层", "中楼层", "高楼层"]

plt.pie(y,

        labels=label,

        autopct='%.2f%%',

        labeldistance = 1.1,

        pctdistance = 0.9,

#        shadow = True,

        radius = 1, 

        startangle = 90, 

        counterclock = False 

       )

plt.title("房屋所在楼层位置比例",fontsize = 12)

plt.savefig(r"E:\工作\硕士\学习\统计软件python\matplotlib饼图.jpg", format="png")

plt.show()

图4房源朝向分布情况

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.family']='KaiTi'

plt.figure(dpi=120)

provinces=['东', '南', '西', '北', '东南','东北', '西南', '西北']

gdp=[250, 1137,169, 768, 432,237,222,160]

plt.barh(provinces[::-1],gdp[::-1],height=0.5)

plt.title('房源朝向分布情况')

plt.grid(axis='x',ls='--',alpha=0.4)

plt.xlim(0,1200)

for i,j in enumerate(gdp[::-1]):

    plt.text(j+0.05,i,j,va='center')

plt.xlabel('数量')

plt.ylabel('朝向')

plt.savefig(r"E:\工作\硕士\学习\统计软件python\matplotlib条形图.jpg",format="png")

plt.show()

图5 房屋户型与房屋附近有无地铁的嵌套环形图

import pyecharts.options as opts

from pyecharts.charts import Pie

inner_x_data = ["有地铁", "无地铁"]

inner_y_data = [1548, 1436]

inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]

outer_x_data = [' 1室0厅 ',  '2室1厅', '2室2厅', '3室1厅' '1室1厅', '3室2厅','1室2厅', '4室1厅', '4室2厅','其他']

outer_y_data = [47,621,611,215,144,1021,12,11,224,81]

outer_data_pair = [list(z) for z in zip(outer_x_data, outer_y_data)]

(

    Pie(init_opts=opts.InitOpts(width="1600px", height="800px"))

    .add(

        series_name="有无地铁",

        data_pair=inner_data_pair,

        radius=[0, "30%"],

        label_opts=opts.LabelOpts(position="inner"),

    )

    .add(

        series_name="房型",

        radius=["40%", "55%"],

        data_pair=outer_data_pair,

        label_opts=opts.LabelOpts(

            position="outside",

            formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",

            background_color="#eee",

            border_color="#aaa",

            border_width=1,

            border_radius=4,

            rich={

                "a": {"color": "#999", "lineHeight": 22, "align": "center"},

                "abg": {

                    "backgroundColor": "#e3e3e3",

                    "width": "100%",

                    "align": "right",

                    "height": 22,

                    "borderRadius": [4, 4, 0, 0],

                },

                "hr": {

                    "borderColor": "#aaa",

                    "width": "100%",

                    "borderWidth": 0.5,

                    "height": 0,

                },

                "b": {"fontSize": 16, "lineHeight": 33},

                "per": {

                    "color": "#eee",

                    "backgroundColor": "#334455",

                    "padding": [2, 4],

                    "borderRadius": 2,

                },

            },

        ),

    )

    .set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"))

    .set_series_opts(

        tooltip_opts=opts.TooltipOpts(

            trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"

        )

    )

    .render("nested_pies.html")

)

图6房屋总价分布图

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.family']='KaiTi'

plt.figure(dpi=120)

provinces=['57万-357万', '357万-657万', '657万-957万', '957万-1257万', '1257万-1557万']

gdp=[1829,869,206,52,12]

plt.barh(provinces[::-1],gdp[::-1],height=0.5)

plt.title('房价分布')

plt.grid(axis='x',ls='--',alpha=0.4)

plt.xlim(0,2000)

for i,j in enumerate(gdp[::-1]):

    plt.text(j+0.05,i,j,va='center')

plt.xlabel('数量(套)')

plt.ylabel('总价')

plt.savefig(r"E:\工作\硕士\学习\统计软件python\matplotlib条形图.jpg",format="png")

plt.show()

图7 房屋面积与房屋总价的散点图

import numpy as np

import pandas as pd

import matplotlib as mpl

import matplotlib.pyplot as plt

import seaborn as sns

data = pd.read_csv(r"E:\工作\硕士\学习\统计软件python\期末作业\qxhsj.csv")

data.head()

sns.lmplot(x="x3", y="y1", data=data)

plt.xlabel('房屋面积(平方米)')

plt.ylabel('房屋总价')

plt.savefig(r"E:\工作\硕士\学习\统计软件python\matplotlib.jpg", format="png")

图8 关注度人数与房屋总价的散点图

import numpy as np

import pandas as pd

import matplotlib as mpl

import matplotlib.pyplot as plt

import seaborn as sns

data = pd.read_csv(r"E:\工作\硕士\学习\统计软件python\期末作业\qxhsj.csv")

data.head()

sns.lmplot(x="x8", y="y1", data=data)

plt.xlabel('关注度(人次)')

plt.ylabel('房屋总价(万元)')

plt.savefig(r"E:\工作\硕士\学习\统计软件python\matplotlib.jpg", format="png")

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/16GeXC9_f6KI4lS2wQ-Z1VQ?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

备注:明天更新两种预测房价的算法,分别是支持向量机和随机森林回归预测。

   点赞+关注,下次不迷路!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对利用Python爬取到的房价信息做数据可视化(附完整代码) 的相关文章

随机推荐

  • Stata输出统计结果到Excel或word

    目录 一 安装外部包 二 相关命令 三 实例 1 描述性统计结果输出 2 相关性结果输入 3 回归结果输出 1 单模型结果 2 多模型结果 参考 一 安装外部包 在Stata内安装外部包 estout和logout ssc install
  • CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN

    摘要 本文从网络体系结构的角度出发 提出了跨阶段局部网络 CSPNet 来解决以往工作中需要大量推理计算的问题 本文将问题归结为网络优化中的重复梯度信息 所提出的网络通过从网络阶段的开始和结束集成特征映射来注重梯度的可变性 CSPNet易于
  • Flink常用算子总结

    Streaming 算子 Map 将元素处理转换 再输出 map算子对一个DataStream中的每个元素使用用户自定义的Mapper函数进行处理 每个输入元素对应一个输出元素 最终整个数据流被转换成一个新的DataStream 输出的数据
  • 2020年黑苹果硬件配置推荐

    前言 黑苹果硬件配置推荐是一件众口难调的事情 但是为了更多的苹果Mac爱好者能够早日开心顺利的使用上macOS系统 mac996站长还是会200 的努力做好这件事情 也请大家大家多给一些支持和鼓励 注 本文仅针对黑苹果台式机做硬件推荐 不涉
  • 协同过滤算法的一些报错及python函数学习

    文章目录 1 cannot import name jaccard similarity score 2 DataFrame object has no attribute dtype 3 sort values 4 sort index
  • 2023前端面试题及答案整理(JS笔试题)

    JS笔试题 JS类型相关 typeof 没定义的变量会报错吗 typeof let定义了的呢 未声明的变量使用 typeof 返回字符串 undefined typeof 一个 let 定义的变量会因为暂时性死区报错 前提 let cons
  • go语言面试题

    文章目录 1 下面这段代码输出什么 2 下面代码输出什么 3 同级文件的包名不允许有多个 是否正确 4 下面的代码有什么问题 请说明 1 下面这段代码输出什么 func main count 0 for i range 256 struct
  • webpack 学习笔记(二) 打包 AMD模块时 js路径错误

    在使用webpack打包模块的时候遇到的问题 各种百度一直无法解决这个问题 真的对新手太不友好了 webpack 作为 一个模块打包工具 它可以将AMD CMD CommonJs ES6 模块都进行打包 这里推荐一个讲解模块比较详细的博客
  • 华为机考108题(c++)(1-16)

    HJ1 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度 单词以空格隔开 字符串长度小于5000 注 字符串末尾不以空格为结尾 输入描述 输入一行 代表要计算的字符串 非空 长度小于5000 输出描述 输出一个整数 表示输入字符
  • C语言算法--冒泡排序

    C语言算法 冒泡排序 1 什么是冒泡排序 冒泡排序是一种简单的排序算法 它通过比较相邻元素的大小 并根据需要交换它们的位置来排序数据 它的名称来自于越小的元素会慢慢 冒泡 到数组的开头 冒泡排序的基本思想是从数组的第一个元素开始 依次比较相
  • 修改本机localhost映射dns解析

    去C Windows System32 drivers etc目录下找到hosts文件 进入修改 最后一行添加127 0 0 1 空格 写自己的域名映射 增加后进入cmd命令行窗口输入ipconfig flushdns刷新dns解析 此后就
  • 开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比

    不论您是一名开发者 架构师 CTO 如果您曾深度参与在微服务开发中 那么相信您一定有过开源微服务框架或体系选型的疑问 Apache Dubbo Spring Cloud gRPC 以及 Service Mesh 体系产品如 Istio 到底
  • Vinted店铺为什么被封?如何应对?

    Vinted是一家在线二手交易平台 专门用于买卖衣物和时尚配件 自从2022年以来 Vinted也越来越向综合性跨境电商平台转变 细心的伙伴都会发现 近来Vinted这阵子封号确实很严重 感觉是风控变严格了 但是万变不离其宗 说到底封控还是
  • librdkafka编译及简单使用过程简介

    librdkafka 使用了 C 11 使用 VS2010 无法编译 需要使用更高版本的 VS 才能编译 我这里使用的是 VS2017 1 编译版本 编译环境 windows VS2017 openssl 版本 openssl 1 0 2t
  • VRTK——UI控制(点击按钮)

    1 Canvas必须带有VRTK UICanvas脚本 2 LeftControllerScriptAlias RightControllerScriptAlias必须有 VRTK ControllerEvents VRTK Pointer
  • 如何在 Python 和 Node.js 之间通信 JSON 数据?

    JSON 可以缩写为 JavaScript Object Notation 它是一个基于文本的文件 用于在编程语言中传输和存储数据 它由使用内置包即 JSON 的 python 编程语言支持 其文本以带引号的字符串格式给出 其中在大括号 中
  • git Bash上传本地项目到github

    首先登陆个人github账号新建一个仓库 新建好仓库后打开要上传的项目所在位置 右键文件夹 选择Git Bash Here 第一步 git init初始化 第二步 git add 添加到仓库 注 出现警告的话再输入一次 第三步 git co
  • 如何解决ImportError: cannot import name ‘BatchNormalization‘ from ‘keras.layers.normalization‘

    报错如下所示 其实就是版本的问题 改之前的代码 from keras layers normalization import BatchNormalization 改之后 from keras layers normalization ba
  • imx6ull驱动开发经验

    1 背景 imx6ull驱动开发基于正点原子的开发板 上面运行linux 4 1 15内核 根文件系统为ubuntu 16 05 5 LTS 2 加载驱动文件chrdevbase ko文件时 先使用depmod生成依赖文件时 提示无modu
  • 对利用Python爬取到的房价信息做数据可视化(附完整代码)

    大家好 我是带我去滑雪 每天教你一个小技巧 1 数据展示 本文利用Python爬取到的房价信息做数据可视化 爬取数据的文章见 利用Python爬取房价信息 附代码 用python爬取房价数据 带我去滑雪的博客 CSDN博客 所爬取的指标有小