爬取全国各地区汽车销量情况并用中国地图可视化展示

2023-11-13

爬取全国各地区汽车销量情况并用中国地图可视化展示

项目介绍

爬取2017年全国各省份的汽车销量情况(由于数据源的问题,不包含台湾省的数据情况),并且利用 pyecharts 可视化中国地图展示。

数据爬取网页链接:
http://www.daas-auto.com/newsDe/892.html

pyecharts 是Python制图一个功能非常强大的第三方库,不仅可以做简单的图表,还可以做世界地图,数据大屏等等,有兴趣的可以看一下官方文档。

https://pyecharts.org/#/zh-cn/intro

网页详情

查看页面情况,由于页面没有采用JavaScript编写,因此我们直接就采用requests库进行内容爬取。
在这里插入图片描述
老规矩,F12 查看网页源码情况:
在这里插入图片描述
在Network选择框中获取网页的请求头:

headers_ = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51"}

直接通过selecter选择器爬取想要的内容:

province = bs.select(" table > tbody > tr > td:nth-child(1)")
values = bs.select("table > tbody > tr > td:nth-child(2)")

代码

爬取数据代码

import requests
import re
from bs4 import BeautifulSoup

headers_ = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51"}
url = 'http://www.daas-auto.com/newsDe/892.html'
html = requests.get(url,headers = headers_)
bs = BeautifulSoup(html.text,"html.parser")
# print(bs)

province = bs.select(" table > tbody > tr > td:nth-child(1)")
values = bs.select("table > tbody > tr > td:nth-child(2)")

data = []

for pro,val in zip(province,values):
    d = []
    w = pro.text
    #由于Map可视化中国地图中,对于各个省份的命名是有固定的格式的,
    #因此我们要对爬取的省份名称进行处理一下,详细情况可以看上文提到的pyecharts官方文档
    if w == "省份":
        w = w.replace("省份","地区")
    else:
        w = w.replace("省","")
        w = w.replace("市","")
        w = w.replace("自治区","")
        w = w.replace("广西壮族","广西")
        w = w.replace("新疆维吾尔","新疆")
        w = w.replace("宁夏回族","宁夏")
    d.append(w)
    if val.text != '销量(辆)':
        d.append(int(val.text))
    else:
        d.append(val.text)
    print(d)
    data.append(d)

将爬取的数据保存到文档中

import xlwt  #进行excel操作

#创建一个Excel数据表
word = xlwt.Workbook(encoding = 'utf-8', style_compression=0)
#     添加sheet表格,并允许重复修改
sheet = word.add_sheet('销量数据', cell_overwrite_ok=True)

for i in range(0, len(data)):
    d = data[i]
    for j in range(0, 2):  #i,j均是从0开始的
        sheet.write(i, j, d[j]) #第i+1行第j+1列,填入数据d[j]

word.save('销量数据.xls')
print("数据保存成功!")

中国地图可视化

from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.globals import ThemeType, CurrentConfig
import pandas as pd


data = pd.read_excel("销量数据.xls")
# print(data['地区'])
# print(data['销量(辆)'])

datas = [(i, j) for i, j in zip(data['地区'], data['销量(辆)'])]

# 实例化一个Map对象
map_ = Map(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))

# 地图  maptype="china"选择中国地图,data_pair=datas数据源
map_.add(series_name="销售数量", data_pair=datas, maptype="china")

# 设置系列配置项
map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False))   # 不显示label
# 设置全局配置项
map_.set_global_opts(
     title_opts=opts.TitleOpts(title="各省份汽车销售情况", 
                               pos_left='40%', 
                               pos_top='10'),   # 调整title位置
     legend_opts=opts.LegendOpts(is_show=False),
     visualmap_opts=opts.VisualMapOpts(
         max_=1450000, 
         min_=50000, 
         is_piecewise=True,
       pieces=[{"max": 250000, "min": 50000, "label": "50000-250000", "color": "#00FFFF"},
                 {"max": 450000, "min": 250001, "label": "250001-450000", "color": "#FF69B4"},
                 {"max": 650000, "min": 450001, "label": "450001-650000", "color": "#0000FF"},
                 {"max": 850000, "min": 650001, "label": "650001-850000", "color": "#00BFFF"},
                 {"max": 1050000, "min": 850001, "label": "850001-1050000", "color": "#228B22"},
                 {"max": 1250000, "min": 1050001, "label": "1050001-1250000", "color": "#FF0000"},
                 {"max": 1450000, "min": 1250001, "label": ">=1250001", "color": "#FFD700"}
                ] # 分段  添加图例注释和颜色
     )
)
# 渲染在网页上   有交互性
map_.render('各省份汽车销售情况.html')
map_.render_notebook()

运行效果

在这里插入图片描述

在这里插入图片描述
上个星期都没有更新博文,五一假期后的第一天继续努力!
结束,拜拜!!!

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

爬取全国各地区汽车销量情况并用中国地图可视化展示 的相关文章

  • Scrapy 在抓取一长串 url 时陷入困境

    我正在抓取一个大的 url 列表 1000 左右 并且在设定的时间后 爬虫程序会以 0 页 分钟的速度爬行 爬行时问题总是出现在同一个位置 url 列表是从 MySQL 数据库检索的 我对 python 和 scrapy 相当陌生 所以我不
  • 如何在 Python 中使用 .format() 打印“for”循环中的列表?

    我是 Python 新手 我正在编写一段非常简单的代码 使用 for 循环打印列表的内容 format 我想要如下的输出 但我收到此错误 names David Peter Michael John Bob for i in names p
  • Redis - 错误:值不是有效的浮点数

    我在 Redis 中有一个排序集 我试图通过在Python代码中使用zincrby来更新特定元素的计数器值 例如 conn zincrby usersSet float 1 user1 但它显示错误为 错误 值不是有效的浮点数 我在 cli
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 创建一个行为类似于任何变量但具有更改/读取回调的类

    我想创建一个类 其行为类似于 python 变量 但在更改 读取 变量 时调用一些回调函数 换句话说 我希望能够按如下方式使用该类 x myClass change callback read callback 将 x 定义为 myclas
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp
  • SQLAlchemy 默认日期时间

    这是我的声明模型 import datetime from sqlalchemy import Column Integer DateTime from sqlalchemy ext declarative import declarati
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 在 PyCharm 中运行命令行命令

    你好 我正在使用Python 但之前从未真正使用过它 我收到一些命令 需要在终端中运行 基本上 python Test py GET feeds 我正在使用 PyCharm 我想知道是否有办法从该 IDE 中运行这些相同的命令 按 Alt
  • 如何使用lxml和python更新xml文件?

  • Pandas:向量化局部范围操作([i:i+2] 行的最大值和总和)

    我希望在数据帧中的每一行的局部范围内进行计算 同时避免速度缓慢for环形 例如 对于下面数据中的每一行 我想找到未来 3 天内 包括当天 的最高气温以及未来 3 天内的总降雨量 Day Temperature Rain 0 30 4 1 3
  • 将多个 isinstance 检查转换为结构模式匹配

    我想转换此现有代码以使用模式匹配 if isinstance x int pass elif isinstance x str x int x elif isinstance x float Decimal x round x else r
  • Celery 设计帮助:如何防止并发执行任务

    我对 Celery AMQP 相当陌生 正在尝试提出一个任务 队列 工作人员设计来满足以下要求 我有多种类型的 每用户 任务 例如 TaskA TaskB TaskC 这些 每用户 任务中的每一个都为系统中的一个特定用户读取 写入数据 因此
  • 如何使用 Python Pandas 制作 DataFrame 切片并在特定切片中“fillna”?

    问题 让我们从 Kaggle 获取泰坦尼克号数据集 我有包含 Pclass 性别 和 年龄 列的数据框 我需要用特定组的中位数填充 年龄 列中的 NaN 如果是来自一等的女性 我想用一等女性的中位数填写她的年龄 而不是整个年龄列的中位数 问
  • 找到图像特征宽度的正确方法和Python包

    输入是一个在黑色背景上带有彩色 抱歉 垂直线的光谱 给定该带的近似 x 坐标 用 X 标记 我想找到该带的宽度 我对图像处理不熟悉 请引导我前往正确的方法图像处理和Python图像处理package也能起到同样的作用 我认为 PIL Ope
  • Numba jitclass 不适用于 python 列表

    我在用python 3 6 and numba 0 36 这个问题有一个sister https stackoverflow com questions 48159360 numba custom stack class and pop f
  • Django:在单独的线程中使用相同的测试数据库

    我正在使用具有以下数据库设置的测试数据库运行 pytests DATABASES default ENGINE django db backends postgresql psycopg2 NAME postgres USER someth
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐

  • 全栈工程师的职业前景及就业环境情况说明

    本篇文章主要讲解全栈工程师的职业前景和就业趋势 作者 任聪聪 日期 2023年4月20日 全栈工程师顾名思义就是会一个技术栈领域的所有客户端技术 如web全栈即前后端技术栈都会的工程师 如web pc app都会的则也是全栈 大全栈 故此全
  • 网络---因特网的概述

    因特网的概述 网络 互联网 因特网 网络 许多计算机连接在一起 互联网 internet 许多网络连接在一起 因特网 全球最大的一个互联网 Internet和广域网 局域网 覆盖范围小 自己花钱买设备 带宽固定 10M 100M 1000M
  • 关于ER图和UML图之间的对比

    ER图与UML图 ER图 实体 联系图 Entity Relation Diagram 用来建立数据模型 在数据库系统概论中属于概念设计阶段 ER图提供了表示实体 即数据对象 属性和联系的方法 用来描述现实世界的概念模型 构成E R图的基本
  • React项目 加入 TS

    1 全局安装ts npm i g typescript 2 创建tsconfig json tsc init 修改tsconfig json 开启jsx和allowJs配置 3 安装开发环境依赖 npm install save dev t
  • 数据分析:Pandas之Series用法总结

    文章目录 Series 一 导入Series 二 创建Series 1 使用列表或者numpy进行创建 默认索引为0到N 1的整数型索引 2 使用字典创建 推荐使用 三 Series的索引和切片 1 显式索引与切片 2 隐式索引与切片 四
  • 域名系统由什么服务器组成,域名(DNS)的有那三个组成部分

    域名制度 域名 DNS 的有那三个组成部分 DNS由下面三个部分组成 域名空间和资源记录 域名空间是一个树状结构 资源记录是与名字相关的一些数据 从概念上说 每个结点和域名空间树的叶子结点都有一定的信息 而查询是要查询出一些与之相关的特定信
  • 辛普森悖论及贝叶斯解释

    辛普森悖论 Simpson s Paradox 亦有人译为辛普森诡论 为英国统计学家E H 辛普森 E H Simpson 于1951年提出的悖论 即在某个条件下的两组数据 分别讨论时都会满足某种性质 可是一旦合并考虑 却可能导致相反的结论
  • leetcode 63. 不同路径 II

    一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 现在考虑网格中有障碍物 那么从左上角到右下角将会有多少条不同的路径
  • ReactNative系列之四十八屏幕宽高

    有几种方式可以获取屏幕 依次来对比下 1 view gt onLayout measure 如果view是flex 1 则获取的为屏幕真正的可显示宽高 即全面屏含刘海高度 安全区模式不含刘海高度 实际 2 Dimens 监听change 在
  • 【实现一套爬虫数据抓取平台】[3-5-03] 微博长短地址转换

    文章目录 零 系列目录 一 背景 二 代码 三 总结 零 系列目录 写这套文章的时候 不会完全按照目录的顺序一篇一篇写 大家可以到目录中直接找到对应的章节进行查看 点我跳转 一 背景 新浪微博有两类地址 分别是 pc站地址 https we
  • VSCode配置C++开发环境:OpenCV

    文章目录 Linux 编译 调试 配置OpenCV Win10 编译调试 配置OpenCV 参考 最近在做深度学习的C 部署相关工作 于是写下这篇文档记录环境配置的过程 环境配置是一项非常繁琐的工作 无论从大学做相关作业还是到工作上 做这项
  • ORACLE中通过SQL语句(alter table)来增加、删除、修改字段

    ORACLE中通过SQL语句 alter table 来增加 删除 修改字段 1 添加字段 alter table 表名 add 字段 字段类型 default 输入默认值 null not null 2 添加备注 comment on c
  • Git合并代码流程——2023.05

    本文介绍一下如何将git上面的代码合并 一 把分支代码合并到master 首先切换到分支hello git checkout hello 使用git pull 把分支代码pull下来 git pull 切换到主分支 git checkout
  • 【收藏】开发人员看过来:11 个免费的开源 IDE

    1 Komodo Edit Windows Mac Linux Komodo Edit 是开源的 支持PHP Python Ruby JavaScript Perl Tcl XML HTML 5 and CSS 3 它具备语法着色 折叠 背
  • SSTI-2 继承关系 & 魔术方法

    主要内容学习自 B站 重庆橙子科技 SSTI 模板注入 我力推橙子科技的所有 CTF 课程 由于在模板注入时 我们能够注入的地方 终究只是一个变量 而不是 Python 语句 所以直接注入 Python 语句是不能执行的 需要一些特殊操作让
  • training set, validation set, test set的区别

    首先安利一下一个机器学习的入门在线课程 台湾大学机器学习 以及关于上面这个问题的一个解答 解答 大四做毕设的时候就有这个问题 当时没想明白 后面一直疑惑不解 直到今天才搞懂 首先写一下结论 training set 用来训练模型 valid
  • idea通过wsdl文件自动生成webservice客户端java代码

    今天做项目要从门户后台调用一个webservice接口获取角色对应的菜单列表 门户提供一个wsdl的url 之前没调过webservice接口 因为知道可以根据wsdl链接自动生成客户端代码 网上搜了一下 可以用idea自动生成 就试了一下
  • ssh放行端口_ssh 连接需要开放哪些端口

    目前的iptables如附 A OUTPUT o lo j ACCEPT A OUTPUT m state state RELATED ESTABLISHED j ACCEPT A OUTPUT m state state INVALID
  • 如何用Microsoft Office Visio画时序图

    文件 新建 软件和数据库 UML模型图 然后在左侧的形状中点击 UML序列
  • 爬取全国各地区汽车销量情况并用中国地图可视化展示

    爬取全国各地区汽车销量情况并用中国地图可视化展示 项目介绍 网页详情 代码 爬取数据代码 将爬取的数据保存到文档中 中国地图可视化 运行效果 项目介绍 爬取2017年全国各省份的汽车销量情况 由于数据源的问题 不包含台湾省的数据情况 并且利