当前位置 : 主页 > 编程语言 > python >

【python数据可视化】穷逼买二手房历险记

来源:互联网 收集:自由互联 发布时间:2022-09-29
文章目录 ​​一、实验介绍​​ ​​二、模块设计​​ ​​1.数据准备​​ ​​2.绘图​​ ​​三、第三方库介绍​​ ​​1.Pandas库​​ ​​2.Pyecharts库(敲黑板)​​ ​​3.matplo


文章目录

  • ​​一、实验介绍​​
  • ​​二、模块设计​​
  • ​​1.数据准备​​
  • ​​2.绘图​​
  • ​​三、第三方库介绍​​
  • ​​1.Pandas库​​
  • ​​2.Pyecharts库(敲黑板)​​
  • ​​3.matplotlib库​​
  • ​​4.xlrd库​​
  • ​​四、代码实现​​
  • ​​五、效果和结论​​
  • ​​reference​​

一、实验介绍

穷逼李华(化名)买不起新房,决定抄底二手房,下面让我们来用python数据分析全国的二手房价市场,康康哪个省份的二手房建筑面积最多。

二、模块设计

1.数据准备

数据来自“房天下”网站爬虫得到的数据

本程序使用了pandas、matplotlib、Pyecharts等第三方库,通过对这些库的使用,初步理解python的计算生态以及基本语法的运用。

我们先可以先看下数据:

# -*- coding = utf-8 -*-
import pandas as pd
#import pyecharts as pye
df=pd.read_excel('Second_hand_house.xls')
ans = df.head()
print(ans)

如下是excel表格内的前几行内容:

0 安徽 长丰 水湖镇 住宅 香溢花城 NaN NaN 0.5100 1.90 117.170135
1 安徽 长丰 双墩镇 住宅 铭威·翰林苑 NaN NaN 0.4366 1.89 117.170250
2 安徽 长丰 双墩镇 住宅 军港新村南区 NaN NaN 0.3300 0.76 117.270996
3 新疆 阿克苏 阿克苏市 住宅 左岸明珠.香邸 NaN NaN NaN NaN 80.274124
4 新疆 阿克苏 阿克苏市 住宅 左岸明珠·香邸 91659.0 106672.0 0.4000 3.60 80.274811

纬度 价格 建成年
0 32.491436 NaN 2017
1 32.479336 NaN 2015
2 32.013783 NaN 2019
3 41.184479 NaN 2016
4 41.183842 NaN 2019

2.绘图

进行地图的可视化主要是通过 Pyecharts 包实现,Pyecharts 主要由两个类进行地图的可视化:

  • Map 类可视化的方式是将行政区块作为数据的映射对象,即行政区块整体面积的颜色与数值构成映射关系;
  • Geo 类可视化的方式是将经纬度坐标作为数据的映射对象,相比 Map 而言, Geo 相对灵活,可以传入不同的绘图对象。

Map 对象传入的数据类型为二维列表,列表各元素为​​[名称,数据]​​​。需要注意的是,名称须与 maptype 层级对应。
例如: maptype 默认层级是 china ,则名称层级应为省(或者省会、直辖市)一级,若将 maptype 设置为广东,则名称的层级应该为市一级,比如中山市。

三、第三方库介绍

1.Pandas库

直接在anaconda创建虚拟环境后pip就行了。
Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。
Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。
Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

2.Pyecharts库(敲黑板)

anaconda里竟然没有这库,所以需要手动下载(​​https://pypi.org/project/pyecharts35/#modal-close​​)然后放到anaconda1\Lib\site-packages\scripts文件夹里,再在anaconda的prompt中切换虚拟环境后pip install下载即可。

进行地图的可视化主要是通过 Pyecharts 包实现,Pyecharts 主要由两个类进行地图的可视化:

  • Map 类可视化的方式是将行政区块作为数据的映射对象,即行政区块整体面积的颜色与数值构成映射关系;
  • Geo 类可视化的方式是将经纬度坐标作为数据的映射对象,相比 Map 而言, Geo 相对灵活,可以传入不同的绘图对象。

Map 对象传入的数据类型为二维列表,列表各元素为​​[名称,数据]​​​。
需要注意的是,名称须与 maptype 层级对应。
例如: maptype 默认层级是 china ,则名称层级应为省(或者省会、直辖市)一级,若将 maptype 设置为广东,则名称的层级应该为市一级,比如中山市。

3.matplotlib库

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

4.xlrd库

为了从读取Excel电子表格中的数据,我们还需要使用xlrd库,当然pip安装即可:
pip install xlrd

四、代码实现

# !/usr/bin/python3
# -*- coding = utf-8 -*-
import pandas as pd
#import pyecharts as pye
from pyecharts import options as opts
from pyecharts.charts import Map
import matplotlib.colors as cs


df=pd.read_excel('Second_hand_house.xls')
ans = df.head()
# print(ans)

data=df
data=data.groupby(['省份'])['建筑面积'].sum().sort_values(ascending=False)
data_pair=[ [province,area] for province,area in zip(data.index,data)]
data_pair[:5]

data = df
data = data.groupby(['省份'])['建筑面积'].sum().sort_values(ascending=False)

data_pair = [[province, area] for province, area in zip(data.index, data)]

m = Map()
# 往地图中add聚合加入省份数据
m.add(
series_name="",
data_pair=data_pair,
maptype='china',
label_opts=opts.LabelOpts(is_show=False),
is_map_symbol_show=False,
)
m.set_global_opts(
title_opts=opts.TitleOpts(
title="中国各省二手房总建筑面积分布图",
subtitle="数据来源:房天下 单位:平方米",
pos_left="center",
pos_top="top",
title_textstyle_opts=opts.TextStyleOpts(
font_size=25
),
),
# 颜色设置
visualmap_opts=opts.VisualMapOpts(
is_calculable=True,
pos_left="10", # 颜色条与左侧间距
min_=100000, # 颜色条映射数值最小值
max_=10000000,# 颜色条映射数值最大值
range_text=["High", "Low"], # 颜色条两端文字
range_color=[cs.TABLEAU_COLORS['tab:blue'], # 颜色渐变范围最小值为蓝色,依次为橘色,最大值为红色
cs.TABLEAU_COLORS['tab:orange'],
cs.TABLEAU_COLORS['tab:red']],
textstyle_opts=opts.TextStyleOpts(color="black"),
),
)
m.render_notebook()

五、效果和结论

输出的地图支持交互性,体现在:

(1)鼠标悬停在任一省份面积块,会弹出该块面积对应省份的总建筑面积数值大小;
(2)颜色条上方和下方的三角形按钮支持鼠标拖拽,当数据拖拽按钮时,地图中对应数值的颜色块也将随之变动;
(3)鼠标悬停在地图范围内时,通过滑动鼠标中间滚轮,可以缩放地图的大小;
(4)鼠标点击任一省份位置不松开,可以移动整张地图位置。

在jupyter notebook上运行如上的代码,得到下面的图:

【python数据可视化】穷逼买二手房历险记_python


如果鼠标点击进去“甘肃”会显示甘肃对应的数据。

【python数据可视化】穷逼买二手房历险记_第三方库_02


从输出的图可以看出:样本数据中,二手房最大的建筑面积省份为江苏省(颜色最红,最深)。

reference

(1)​​关于pandas的group by讲解​​​

(2)​​用xlrd和xlwt读写excel​​


上一篇:Python将字符串转为变量名的3种方法
下一篇:没有了
网友评论