线程池+进程池爬虫—>深圳房价+数据分析+pyecharts可视化

这一部分转载于自己本人微信公众号: 眼光梭映一世豪,欢迎骚扰!这篇文字只出于想要玩一下数据分析,小白一个,欢迎大家指点批评。

01 第一部分,制作缘由。

历时两天的数据分析项目介绍。
作者偶然发现数据分析是一个有趣的事情,现在是大数据的时代,马云曾经说过,拥有数据就是拥有未来,所以有一个会分析数据的能力是一个比较不错的事情。
作者经过一段时间的爬虫练习,现在可以爬取一些自己想要的数据,但是一些拥有反爬的网站,作者现在还在研究怎么去破解他们,就比如58同城的数字反爬虫,和百度文库的字体反爬虫等等,都是一些很好练习爬虫的资源,这一次的数据分析,是分析深圳租房的费用和买房的费用与地区之间的关系,所有的数据,都来自房天下 ,下面我们就开始讲解整个项目的过程吧。

02第二部分:爬虫的过程

爬虫的网址:https://sz.newhouse.fang.com/house/
在这里插入图片描述
这一次数据分析的数据来源,就是来自房天下这里的深圳租房数据和卖房数据。具体的爬虫过程我就不说了,但是我会把代码给大家参考,如果大家觉得我的代码有什么可以改进的地方也可以联系我,本次爬虫用到了线程池和进程池并发,由于一开始一秒50个并发导致网站之间显示了验证码,所以我减小了并发量,然后每并发一次sleep2秒。
以下是爬虫租房信息的代码,卖方信息的代码与这个差不多,我就不分享了。
在这里插入图片描述
之后将数据存到MySQL数据库中,然后导出为csv文件开始准备数据分析。
一共爬取到了14303条数据,数据量比较客观,对于第一次数据分析的我来说,还是算一个比较庞大的数据,数据库截图。
在这里插入图片描述
可以看到,数据有一些是有问题的,所以我们后面要进行数据的清洗,将一些出了问题的数据删除,不要引起数据分析的错误。
ok,将数据导出之后:
在这里插入图片描述

03 第三部分:数据清洗以及数据分析

以下的数据全都是数据清洗完和分析完的结果,代码会在本文的最后进行截图分享,由于是第一次写数据分析的代码,有点乱,希望不要介意。一共写了400多行,用时一天,开发环境:python3.8,开发工具pycharm。

每一个数据都是动态的,但是微信公众号不能导入进来,所以我就放在了我的网站上,大家可以点进去玩一下这个图。

首先,我们来看一下,我们手头上深圳每一个区域的数据量是多少:
在这里插入图片描述
动态数据(上图的交互动图,大家可以点进来玩玩,pyecharts可视化):
https://www.yxinmiracle.com/%E7%A7%9F%E6%88%BF%E6%95%B0%E6%8D%AE%E5%92%8C%E5%8D%96%E6%88%BF%E6%95%B0%E6%8D%AE%E7%9A%84%E6%AF%94%E8%BE%83.html
左边是卖房数据,很容易看出福田区的卖房数据是最多的,租房数据是龙岗区的最多,看来龙岗的包租婆多一些哈哈哈哈。

租房信息

然后我们再来看看:在不同的住房规格(这里的规格指的是面积我分成三个范围50平方米以下,50平方米以上100平方米以下,100平方米以上)

在这里插入图片描述动态数据(上图的交互动图,大家可以点进来玩玩,pyecharts可视化):
https://www.yxinmiracle.com/%E4%B8%89%E7%B1%BB.html
三个分类,都是南山区的租金是最贵的,这个时候我也十分的怀疑,我们拿100平方米以上的数据来计算一下(进去链接,手点一下柱状图就可以看见详细数据了):
在这里插入图片描述
租金就是上图所示的162.25元,那么假设是125平方米,那么一个月就要162.25*125=2w+ 我的天,能住南山的也特么太有钱了,你们是不是怀疑数据的真实性,与可靠性?说实话,我当初也怀疑这到底是怎么回事,所以我回去看了看我爬下来的数据。(第二列是面积,第三列是一个月的租金)

在这里插入图片描述
然后我去房天下查了一下:

在这里插入图片描述
南山的大房是真的特么的贵啊,以后要是身边有南山的朋友。。咳咳,你们自己看着办吧。
以100平米为参考,看看哪个区最少:

在这里插入图片描述
很显然,是大鹏新区,平均33元,房子至少100平米,一个月就是3300至少,和南山的相比实在是太大了,看来我还是比较适合大鹏。

租房信息

对比完不同大小的房型,那么我们现在忽略房型的大小,算综合的,看看哪个区的租金是最贵的(此时你们是不是想:不用想啦,一定是南山,哈哈哈,那可不一定哦,数据揭晓答案!!)

在这里插入图片描述
动态数据(上图的交互动图,大家可以点进来玩玩,pyecharts可视化):
https://www.yxinmiracle.com//%E5%B9%B3%E5%9D%87%E4%BB%B7%E4%B8%BA%E5%88%86%E6%9E%90.html
果不其然。。。。还是南山的最多平均151元,那我要是住50平方的。。。。151*50=7550 。。唉 我还是住天桥底下吧。。(大家好好努力学习!!!!)

租房信息

其实呢,这种比较比较不科学,因为南山的极端情况有点多,在数据分析的角度,对于连续的异常值,我们不能取两端极端的数据,我们只能取中间值来判断:

在这里插入图片描述
动态数据(上图的交互动图,大家可以点进来玩玩,pyecharts可视化):
https://www.yxinmiracle.com/%E4%B8%AD%E9%97%B4%E5%80%BC.html
还是南山的最多。。。。我看看我住的龙岗
在这里插入图片描述
最中间的价格为3500每个月,这个嘛。。。。我也不好判断,嘻嘻。

接下里就是卖房信息
在这里插入图片描述
动态数据(上图的交互动图,大家可以点进来玩玩,pyecharts可视化):
https://www.yxinmiracle.com/line.html
看来,不管是卖房还是租房子,都是南山区的房价是最高的,高达10万一平方平均,最低的是坪山区3万一平方。。。。现在买房是真的难啊。。。。。。为了数据的可靠性,我们还是看看中间值吧。

卖房数据中间值
在这里插入图片描述
动态数据(上图的交互动图,大家可以点进来玩玩,pyecharts可视化):
https://www.yxinmiracle.com/line2.html
福田区成功超过了南山区!!!!!!!!!!!!!!!!!!!!
高达9万35一平方。。太贵了太贵了
好啦,本次的数据分析到此结束啦,后期会出一些同期对比和缓期对比,这样会大大增加数据的可看度和可信度,希望大家多多支持我!!!也支持一下我的网站 https://www.yxinmiracle.com/ 打算后面会用flask开发,现在还没有开始,不过还好有他才能将这些有趣的图放上去,数据可视化实在是太重要了。如果想要数据和代码文件的话私聊我哦!!!
分析完之后感觉自己以后没地方住了哈哈哈。

这一部分转载于自己本人微信公众号: 眼光梭映一世豪,欢迎骚扰!
小白第一次数据分析,由于处于兴趣,还没有学多少就来了弄了,代码很多重复,只供借鉴一下。

"""
@author: Yxinmiracle
@project: 代码目录
@file: test.py
@time: 2020/3/1 11:32
@desc:

 /*code is far away from bug with the animal protecting
  *  ┏┓   ┏┓
  *┏┛┻━━━┛┻┓
  *┃       ┃  
  *┃   ━   ┃
  *┃ ┳┛ ┗┳ ┃
  *┃       ┃
  *┃   ┻   ┃
  *┃       ┃
  *┗━┓   ┏━┛
  *  ┃   ┃神兽保佑
  *  ┃   ┃代码无BUG!
  *  ┃   ┗━━━┓
  *  ┃       ┣┓
  *  ┃       ┏┛
  *  ┗┓┓┏━┳┓┏┛
  *   ┃┫┫ ┃┫┫
  *   ┗┻┛ ┗┻┛ 
  *   
  */
  """
#df.loc[df['column_name'] == some_value]
import numpy as np
import pandas as pd
from pyecharts.charts import Page, Polar
from pyecharts.faker import Faker
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
#from pyecharts import Pie

data = pd.read_csv("sz.csv")

zhufang_data_number = []

name_list = ['宝安区','大鹏新区','福田区','光明区','龙岗区','龙华区','罗湖区','南山区','坪山区','盐田区']

rent_name = 'area(m^2)'
yuan_name = 'rent(month)'

# 设置切分区域
listBins = [50,100,300]

# 设置切分后对应标签
listLabels = ['0-50','50-100','100以上']

#这里获取的是保安区的数据
baoan_data = data.loc[data['city']=='宝安']
baoan_number = len(baoan_data)
zhufang_data_number.append(baoan_number)

#这里获取的是大鹏新区的数据
dapeng_data = data.loc[data['city']=='大鹏新区']
dapeng_number = len(dapeng_data)
zhufang_data_number.append(dapeng_number)

#这里获取的是福田区的数据
futian_data = data.loc[data['city']=='福田']
futian_number = len(futian_data)
zhufang_data_number.append(futian_number)

#这里获取的是光明区的数据
guangming_data = data.loc[data['city']=='光明区']
guangming_number = len(guangming_data)
zhufang_data_number.append(guangming_number)

#这里获取的是龙岗区的数据
longguang_data = data.loc[data['city']=='龙岗']
longguang_number = len(longguang_data)
zhufang_data_number.append(longguang_number)

#这里获取的是龙华区的数据
longhua_data = data.loc[data['city']=='龙华区']
longhua_number = len(longguang_data)
zhufang_data_number.append(longhua_number)

#这里是获取的是罗湖区的数据
luohu_data = data.loc[data['city']=='罗湖']
louhu_number = len(luohu_data)
zhufang_data_number.append(louhu_number)

#这里获取的是南山区的数据
nanshang_data = data.loc[data['city']=='南山']
nanshang_number = len(nanshang_data)
zhufang_data_number.append(nanshang_number)

#这里是坪山区的数据
pingshan_data = data.loc[data['city']=='坪山区']
pingshan_number = len(pingshan_data)
zhufang_data_number.append(pingshan_number)

#这是是盐田区的数据
yantian_data = data.loc[data['city']=='盐田']
yantian_number = len(yantian_data)
zhufang_data_number.append(yantian_number)

#现在开始进行数据的分析,第一步,我们已经得到了各个区的租房数据,横坐标为地区的名字,纵坐标为各个数据
#print(name_list)
#print(zhufang_data_number)


#第二步,算出每一个地区的每平方米的平均住房价格,以及中位数
# 先算出,每一个地区的平方数总和
#baoan_area_sum_50 = baoan_data[baoan_data[rent_name]<=50][rent_name].sum()
#baoan_area_sum_100 = baoan_data[(baoan_data[rent_name]>50) & (baoan_data[rent_name]<=100)][rent_name].sum()
#baoan_area_sum_hight_100 = baoan_data[baoan_data[rent_name]>100][rent_name].sum()

baoan_area_sum_list = [baoan_data[baoan_data[rent_name]<=50][rent_name].sum(),baoan_data[(baoan_data[rent_name]>50) & (baoan_data[rent_name]<=100)][rent_name].sum(),baoan_data[baoan_data[rent_name]>100][rent_name].sum()]
baoan_rent_sum_list = [baoan_data[baoan_data[rent_name]<=50][yuan_name].sum(),baoan_data[(baoan_data[rent_name]>50) & (baoan_data[rent_name]<=100)][yuan_name].sum(),baoan_data[baoan_data[rent_name]>100][yuan_name].sum()]
baoan_last_data = [baoan_data[baoan_data[rent_name]<=50][yuan_name].sum()/baoan_data[baoan_data[rent_name]<=50][rent_name].sum(),
                   baoan_data[(baoan_data[rent_name]>50) & (baoan_data[rent_name]<=100)][yuan_name].sum()/baoan_data[(baoan_data[rent_name]>50) & (baoan_data[rent_name]<=100)][rent_name].sum(),
                   baoan_data[baoan_data[rent_name]>100][yuan_name].sum()/baoan_data[baoan_data[rent_name]>100][rent_name].sum()]


#这里是大鹏新区中的不同面积对应的房租信息,其中0代表无信息。
dapeng_last_data = [0,
                   dapeng_data[(dapeng_data[rent_name]>50) & (dapeng_data[rent_name]<=100)][yuan_name].sum()/dapeng_data[(dapeng_data[rent_name]>50) & (dapeng_data[rent_name]<=100)][rent_name].sum(),
                   dapeng_data[dapeng_data[rent_name]>100][yuan_name].sum()/dapeng_data[dapeng_data[rent_name]>100][rent_name].sum()]

futian_last_data = [futian_data[futian_data[rent_name]<=50][yuan_name].sum()/futian_data[futian_data[rent_name]<=50][rent_name].sum(),
                   futian_data[(futian_data[rent_name]>50) & (futian_data[rent_name]<=100)][yuan_name].sum()/futian_data[(futian_data[rent_name]>50) & (futian_data[rent_name]<=100)][rent_name].sum(),
                   futian_data[futian_data[rent_name]>100][yuan_name].sum()/futian_data[futian_data[rent_name]>100][rent_name].sum()]

guangming_last_data = [guangming_data[guangming_data[rent_name]<=50][yuan_name].sum()/guangming_data[guangming_data[rent_name]<=50][rent_name].sum(),
                   guangming_data[(guangming_data[rent_name]>50) & (guangming_data[rent_name]<=100)][yuan_name].sum()/guangming_data[(guangming_data[rent_name]>50) & (guangming_data[rent_name]<=100)][rent_name].sum(),
                   guangming_data[guangming_data[rent_name]>100][yuan_name].sum()/guangming_data[guangming_data[rent_name]>100][rent_name].sum()]

longguang_last_data = [longguang_data[longguang_data[rent_name]<=50][yuan_name].sum()/longguang_data[longguang_data[rent_name]<=50][rent_name].sum(),
                   longguang_data[(longguang_data[rent_name]>50) & (longguang_data[rent_name]<=100)][yuan_name].sum()/longguang_data[(longguang_data[rent_name]>50) & (longguang_data[rent_name]<=100)][rent_name].sum(),
                   longguang_data[longguang_data[rent_name]>100][yuan_name].sum()/longguang_data[longguang_data[rent_name]>100][rent_name].sum()]


longhua_last_data = [longhua_data[longhua_data[rent_name]<=50][yuan_name].sum()/longhua_data[longhua_data[rent_name]<=50][rent_name].sum(),
                   longhua_data[(longhua_data[rent_name]>50) & (longhua_data[rent_name]<=100)][yuan_name].sum()/longhua_data[(longhua_data[rent_name]>50) & (longhua_data[rent_name]<=100)][rent_name].sum(),
                   longhua_data[longhua_data[rent_name]>100][yuan_name].sum()/longhua_data[longhua_data[rent_name]>100][rent_name].sum()]


louhu_last_data = [luohu_data[luohu_data[rent_name]<=50][yuan_name].sum()/luohu_data[luohu_data[rent_name]<=50][rent_name].sum(),
                   luohu_data[(luohu_data[rent_name]>50) & (luohu_data[rent_name]<=100)][yuan_name].sum()/luohu_data[(luohu_data[rent_name]>50) & (luohu_data[rent_name]<=100)][rent_name].sum(),
                   luohu_data[luohu_data[rent_name]>100][yuan_name].sum()/luohu_data[luohu_data[rent_name]>100][rent_name].sum()]

nanshang_last_data = [nanshang_data[nanshang_data[rent_name]<=50][yuan_name].sum()/nanshang_data[nanshang_data[rent_name]<=50][rent_name].sum(),
                   nanshang_data[(nanshang_data[rent_name]>50) & (nanshang_data[rent_name]<=100)][yuan_name].sum()/nanshang_data[(nanshang_data[rent_name]>50) & (nanshang_data[rent_name]<=100)][rent_name].sum(),
                   nanshang_data[nanshang_data[rent_name]>100][yuan_name].sum()/nanshang_data[nanshang_data[rent_name]>100][rent_name].sum()]

pingshan_last_data = [pingshan_data[pingshan_data[rent_name]<=50][yuan_name].sum()/pingshan_data[pingshan_data[rent_name]<=50][rent_name].sum(),
                   pingshan_data[(pingshan_data[rent_name]>50) & (pingshan_data[rent_name]<=100)][yuan_name].sum()/pingshan_data[(pingshan_data[rent_name]>50) & (pingshan_data[rent_name]<=100)][rent_name].sum(),
                   pingshan_data[pingshan_data[rent_name]>100][yuan_name].sum()/pingshan_data[pingshan_data[rent_name]>100][rent_name].sum()]

yantian_last_data = [yantian_data[yantian_data[rent_name]<=50][yuan_name].sum()/yantian_data[yantian_data[rent_name]<=50][rent_name].sum(),
                   yantian_data[(yantian_data[rent_name]>50) & (yantian_data[rent_name]<=100)][yuan_name].sum()/yantian_data[(yantian_data[rent_name]>50) & (yantian_data[rent_name]<=100)][rent_name].sum(),
                   yantian_data[yantian_data[rent_name]>100][yuan_name].sum()/yantian_data[yantian_data[rent_name]>100][rent_name].sum()]

all_rent_aver_data = [baoan_data[yuan_name].sum()/baoan_data[rent_name].sum(),
                    dapeng_data[yuan_name].sum()/dapeng_data[rent_name].sum(),
                    futian_data[yuan_name].sum()/futian_data[rent_name].sum(),
                    guangming_data[yuan_name].sum()/guangming_data[rent_name].sum(),
                    longguang_data[yuan_name].sum()/longguang_data[rent_name].sum(),
                    longhua_data[yuan_name].sum()/longhua_data[rent_name].sum(),
                    luohu_data[yuan_name].sum()/luohu_data[rent_name].sum(),
                    nanshang_data[yuan_name].sum()/nanshang_data[rent_name].sum(),
                    pingshan_data[yuan_name].sum()/pingshan_data[rent_name].sum(),
                    yantian_data[yuan_name].sum()/yantian_data[rent_name].sum(),
                      ]

all_median_data = [baoan_data[yuan_name].median(),
                   dapeng_data[yuan_name].median(),
                   futian_data[yuan_name].median(),
                   guangming_data[yuan_name].median(),
                   longguang_data[yuan_name].median(),
                   longhua_data[yuan_name].median(),
                   luohu_data[yuan_name].median(),
                   nanshang_data[yuan_name].median(),
                   pingshan_data[yuan_name].median(),
                   yantian_data[yuan_name].median()
                   ]
#baoan_rent_sum = baoan_data[yuan_name].sum()


# print(all_rent_aver_data)
# print(all_median_data)

fangjia_value = []

#以下是房价的信息(不是租房)
fangjia_baoan = pd.read_csv("baoan.csv",names=['price'])
fangjia_baoan_len = len(fangjia_baoan)
fangjia_value.append(fangjia_baoan_len)

fangjia_dapeng = pd.read_csv("dapeng.csv",names=['price'])
fangjia_dapeng_len = len(fangjia_dapeng)
fangjia_value.append(fangjia_dapeng_len)

fangjia_futian = pd.read_csv("futian.csv",names=['price'])
fangjia_futian_len = len(fangjia_futian)
fangjia_value.append(fangjia_futian_len)

fangjia_guangming = pd.read_csv("guangming.csv",names=['price'])
fangjia_guangming_len = len(fangjia_guangming)
fangjia_value.append(fangjia_guangming_len)

fangjia_longgan = pd.read_csv("longgan.csv",names=['price'])
fangjia_longgan_len = len(fangjia_longgan)
fangjia_value.append(fangjia_longgan_len)

fangjia_longhua = pd.read_csv("longhua.csv",names=['price'])
fangjia_longhua_len = len(fangjia_longhua)
fangjia_value.append(fangjia_longhua_len)

fangjia_luohu = pd.read_csv("luohu.csv",names=['price'])
fangjia_luohu_len = len(fangjia_luohu)
fangjia_value.append(fangjia_luohu_len)

fangjia_nanshan = pd.read_csv("nanshan.csv",names=['price'])
fangjia_nanshan_len = len(fangjia_nanshan)
fangjia_value.append(fangjia_nanshan_len)

fangjia_pingshan = pd.read_csv("pingshan.csv",names=['price'])
fangjia_pingshan_len = len(fangjia_pingshan)
fangjia_value.append(fangjia_pingshan_len)

fangjia_yantian = pd.read_csv("yantian.csv",names=['price'])
fangjia_yantian_len = len(fangjia_yantian)
fangjia_value.append(fangjia_yantian_len)

#最后两个个数据 每个区的平均房价
every_qv_fangjia = [fangjia_baoan['price'].sum()/fangjia_baoan_len,
                    fangjia_dapeng['price'].sum()/fangjia_dapeng_len,
                    fangjia_futian['price'].sum()/fangjia_futian_len,
                    fangjia_guangming['price'].sum()/fangjia_guangming_len,
                    fangjia_longgan['price'].sum()/fangjia_longgan_len,
                    fangjia_longhua['price'].sum()/fangjia_longhua_len,
                    fangjia_luohu['price'].sum()/fangjia_luohu_len,
                    fangjia_nanshan['price'].sum()/fangjia_nanshan_len,
                    fangjia_pingshan['price'].sum()/fangjia_pingshan_len,
                    fangjia_yantian['price'].sum()/fangjia_yantian_len]

#房价中间价位median
every_median_fangjia = [fangjia_baoan['price'].median(),
                        fangjia_dapeng['price'].median(),
                        fangjia_futian['price'].median(),
                        fangjia_guangming['price'].median(),
                        fangjia_longgan['price'].median(),
                        fangjia_longhua['price'].median(),
                        fangjia_luohu['price'].median(),
                        fangjia_nanshan['price'].median(),
                        fangjia_pingshan['price'].median(),
                        fangjia_yantian['price'].median(),
                    ]



print(every_median_fangjia)


pie=(
    Pie()
        .add(
        "",
        [list(z) for z in zip(name_list, zhufang_data_number)],
        radius=["30%", "50%"],
        center=["25%", "55%"],
        label_opts=opts.LabelOpts(is_show=True)
        )
        .add(
        "",
        [list(z) for z in zip(name_list, fangjia_value)],
        radius=["30%", "50%"],
        center=["75%", "55%"],
        label_opts=opts.LabelOpts(is_show=True)
    )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="数据量显示,单位为:个(也就是这个地区有多少个数据)", subtitle="左边为卖房数据,右边为向外租房数据"),
            legend_opts=opts.LegendOpts(
                 pos_top="15%", pos_left="2%"
        ),
       # .set_global_opts(title_opts=opts.TitleOpts(title="数据量显示", subtitle="左边为买房数据,右边为租房数据"))
    )
)

pie.render(path="租房数据和卖房数据的比较.html")


c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION,
                                width="1600px",
                                height="760px"))
        .add_xaxis(['面积为50平方米以下', '面积大于50,小于100平方米', '面积大于100平方米'])
        .add_yaxis("宝安区", baoan_last_data)
        .add_yaxis("大鹏新区", dapeng_last_data)
        .add_yaxis("福田区", futian_last_data)
        .add_yaxis("光明区", guangming_last_data)
        .add_yaxis("龙岗区", longguang_last_data)
        .add_yaxis("龙华区", longhua_last_data)
        .add_yaxis("罗湖区", louhu_last_data)
        .add_yaxis("南山区", nanshang_last_data)
        .add_yaxis("坪山区", pingshan_last_data)
        .add_yaxis("盐田区", yantian_last_data)

        .set_global_opts(
            title_opts=opts.TitleOpts(title="在不同房型大小下,每平方米需要多少租金",subtitle="数值单位为:元/平方米"),
            legend_opts=opts.LegendOpts(
                orient="vertical", pos_top="15%", pos_left="1%"
            ),
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=10))
        )
        .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
           # markpoint_opts=opts.MarkPointOpts(
           #     data=[
           #     opts.MarkPointItem(type_="max",name="最大值")
           # ]
            #)
    )
)
c.render(path="三类.html")


c2 = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,
                                width="1600px",
                                height="760px"))
    .add_xaxis(name_list)
    .add_yaxis("每平方米的平均价位",all_rent_aver_data)
    .reversal_axis()
    .set_series_opts(label_opts=opts.LabelOpts(position="right",is_show=False),
                     #label_opts=opts.LabelOpts(is_show=False),
                      markpoint_opts=opts.MarkPointOpts(
                          data=[
                          opts.MarkPointItem(type_="max",name="最大值"),
                        opts.MarkPointItem(type_="min",name="最小值")
                      ]
                )
        )
    .set_global_opts(title_opts=opts.TitleOpts(title="整个区的平均价为",subtitle="数值单位为:元/平方米"))
)
c2.render(path="平均价为分析.html")


c3 = (
    Polar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,
                                width="1600px",
                                height="760px"))
    .add_schema(
        angleaxis_opts=opts.AngleAxisOpts(data=name_list, type_="category")
    )
    .add("每个区的中间价为(中间值)",all_median_data , type_="bar", stack="stack0")

    .set_series_opts(label_opts=opts.LabelOpts(position="right", is_show=False)

 )

    .set_global_opts(title_opts=opts.TitleOpts(title="每个区租金的中间值(注意,是中间值,不是平均值)",subtitle="单位:元每月"))

)
c3.render("中间值.html")

from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line,Scatter

print(every_qv_fangjia)



line = (
    Line(init_opts=opts.InitOpts(theme=ThemeType.DARK,
                                width="1600px",
                                height="760px"))
    .add_xaxis(name_list)
    .add_yaxis("房价",every_qv_fangjia)
    .set_global_opts(title_opts=opts.TitleOpts(title="每个区的平均房价",subtitle="单位:元每平方"))
    .set_series_opts(label_opts=opts.LabelOpts(position="right", is_show=True),
                 markpoint_opts=opts.MarkPointOpts(
                          data=[
                          opts.MarkPointItem(type_="max",name="最大值"),
                        opts.MarkPointItem(type_="min",name="最小值")
                      ]
                )
        )

)

#grid = (
#    Grid()
#    .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
#    .add(line, grid_opts=opts.GridOpts(pos_top="60%"))
#)
line.render("line.html")

from pyecharts.charts import Page, PictorialBar
from pyecharts.globals import SymbolType

line2 = (
    PictorialBar(init_opts=opts.InitOpts(theme=ThemeType.DARK,
                                width="1600px",
                                height="760px"))
    .add_xaxis(name_list)
    .add_yaxis(
        "",
        every_median_fangjia,
        label_opts=opts.LabelOpts(is_show=True),
        symbol_size=22,
        symbol_repeat="fixed",
        symbol_offset=[0, -5],
        is_symbol_clip=True,
        symbol=SymbolType.ROUND_RECT,
    )
    .reversal_axis()
    .set_global_opts(
        title_opts=opts.TitleOpts(title="每个区房价的中间价位",subtitle="单位:元每平方米"),
        xaxis_opts=opts.AxisOpts(is_show=True),
        yaxis_opts=opts.AxisOpts(
            axistick_opts=opts.AxisTickOpts(is_show=False),
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(opacity=0)
            ),
        ),
    )
.set_series_opts(label_opts=opts.LabelOpts(position="right", is_show=True),
                 markpoint_opts=opts.MarkPointOpts(
                          data=[
                          opts.MarkPointItem(type_="max",name="最大值"),
                        opts.MarkPointItem(type_="min",name="最小值")
                      ]
                )
        )
)
line2.render("line2.html")
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值