用matplotlib和pyecharts实现对疫情数据可视化(持续更新)

本文介绍了如何使用Python爬取疫情数据,包括请求网页、解析数据,并利用matplotlib和pyecharts进行数据可视化,展示了饼状图和柱状图的绘制过程。项目涵盖了爬虫和数据可视化的实现细节。
摘要由CSDN通过智能技术生成

最近呢,接到一个项目:
项目内容:
1.利用Python编写爬虫程序,爬取https://ncov.dxy.cn/ncovh5/view/pneumonia页面中当天的“疫情数据”并保存到本地

2.根据爬取的数据可视化展示
项目实现
很显然,该项目分为两个部分:

  1. 使用爬虫获取数据(request,beautifulsoup,pyquery……)
  2. 进行数据可视化(pyecharts,matplotlib……)
    我们进入该网址使用快捷键F12浏览源代码
    在这里插入图片描述
    经过漫长的寻找我们找到了所需要的数据:
    在这里插入图片描述
    经过整理,我们发现它的数据是这样的:

[{ {“provinceName”:“黑龙江省”,“provinceShortName”:“黑龙江”,“currentConfirmedCount”:408,“confirmedCount”:930,“suspectedCount”:384,“curedCount”:509,“deadCount”:13,“comment”:"",“locationId”:230000,“statisticsData”:“https://file1.dxycdn.com/2020/0223/643/3398299753820971199-135.json”,"cities":[{ “cityName”:“境外输入”,“currentConfirmedCount”:347,“confirmedCount”:386,“suspectedCount”:34,“curedCount”:39,“deadCount”:0,“locationId”:0},{…………},{…………},{…………}………}………………]

所以,经过观察得知它是把所有省的信息整合成一个字典,把这些字典并称一个列表
在省的字典里不仅包含了省的信息还包含了一对键值对——“cities”:[],就是说它把所有该省的城市的信息整合成一个列表,作为键(cities)的对应值;
而在这个列表中,包含着所有的城市的信息是以字典的凡是存储在该列表中的;
再观察这个字典可以知道,它不仅包含了城市名字的键值对(cityName),还包含着
currentConfirmedCount(现存确诊人数),
confirmedCount(累计确诊人数),
suspectedCount(疑似人数),
curedCount(治愈人数),
deadCount(死亡人数),
locationId(地区代码)
————————————————————————
这样我们就可以通过方法获取信息了,详见下面代码

我们一边看代码一边讲:
这里我们先导入模块:

import requests
from pyquery import PyQuery as pq
import json
import pandas as pd
import time
import matplotlib.pyplot as plt
from matplotlib.pyplot import savefig

部分模块后面会用到
然后呢我们使用requests库获得源码:

url = "https://ncov.dxy.cn/ncovh5/view/pneumonia"
    response = requests.get(url)
    if response.status_code == 200:
        response.encoding = "utf-8"

然后呢我们对其进行格式化并获取json对象

 dom = pq(response.content)
 data = dom("script#getAreaStat").text().split(" = ")[1].split("}catch")[0]
 jsonobj = json.loads(data)

注意:
我们这里只是获取了全国省份的信息并没有获取城市的信息
(如果不会pyquery可参考https://www.jianshu.com/p/770c0cdef481)
随后我们获取城市信息:

for shengfen in jsonobj:
   chengshi[shengfen.get('provinceName')] = shengfen.get('cities')

我们获取了cities所对应的值(一个包含着数个字典的列表)

for v in chengshi.keys():
    cities_data = []
    for item in chengshi.get(v):
        dic = {
   }
        dic["城市名字"] = item["cityName"]
        dic["现存确诊人数"] = item["currentConfirmedCount"]
        dic["累计确诊人数"] = item["confirmedCount"]
        dic["疑似人数"] = item["suspectedCount"]
        dic["治愈人数"] = item["curedCount"]
        dic["死亡人数"] = item["deadCount"]
        cities_data.append(dic)
        #获取对应键值对
if (cities_data.__len__() > 0):
     
  • 19
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值