腾讯全国疫情实时动态 + pyecharts可视化「建议收藏」

腾讯全国疫情实时动态 + pyecharts可视化「建议收藏」目前全国疫情爆发的厉害,我们可以自己用python写个程序,实时观察全国各地区疫情动态,下面,我们来步入正题。先导入代码模块importtimeimportrequestsimportjsonimportpandasaspdfrompyechartsimportoptionsasoptsfrompyecharts.chartsimportBar,Line,Pie,Grid,Map然后就是主要的代码部分首先创建一个类,拿到腾讯疫情网页的URL:

大家好,欢迎来到IT知识分享网。

目前全国疫情爆发的厉害,我们可以自己用python写个程序,实时观察全国各地区疫情动态,下面,我们来步入正题。

先导入代码模块

import time
import requests
import json
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Pie, Grid, Map

然后就是主要的代码部分

首先创建一个类,拿到腾讯疫情网页的URL:

https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=_&_=1650358262411

这个URL在网页打开是这样的

腾讯全国疫情实时动态 + pyecharts可视化「建议收藏」

想要实时观察疫情动态,就要根据现在的时间去更新疫情数据,这个可以用python来实现,写一个时间戳就可以了,然后把时间戳拼接到URL中

self.sjc = int(time.time()*1000)
self.url = f'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=_&_={self.sjc}'

然后就是解析url,先把数据变成json数据,我这里用的是replace替换,开头和结尾都要替换,然后用键拿值

response = requests.get(self.url).text
data_o = response.replace('_(', '')  # 替换开头
data_t = data_o.replace(')', '')  # 替换结尾
data_th = json.loads(data_t)['data']  # 拿到json数据中 data 的值
china_data = json.loads(data_th)['areaTree'][0]['children']  # 拿到json数据中 children 的值

然后创建一个空数据集,用for循环遍历拿到的数据,再创建一个空字典,利用空字典设置键等于遍历的某些值,用pandas制成图表,可以将数据直接保存到Excel中

# 设置一个数据集
data_set = []
for i in china_data:
    # 创建空字典
    data_dict = {}
    # 地区名称
    data_dict['province'] = i['name']
    # 疫情数据
    data_dict['nowConfirm'] = i['total']['nowConfirm']  # 现有确诊
    data_dict['confirm'] = i['total']['confirm']  # 累计确诊
    data_dict['dead'] = i['total']['dead']  # 死亡人数
    data_dict['heal'] = i['total']['heal']  # 治愈人数
    data_dict['wzz'] = i['total']['wzz']  # 本土无症状确诊
    data_dict['provinceLocalConfirm'] = i['total']['provinceLocalConfirm']  # 地区本地确诊
    data_set.append(data_dict)
fd = pd.DataFrame(data_set)  # 制成表格
fd.to_excel('全国地区疫情数据.xls')  # 保存Excel

然后就是数据可视化了

利用pyecharts可以绘制柱形图,折线图,扇形图,甚至是中国地图

下面我们绘制地图

china_map = (
    Map()
    # china--意为中国地图
    .add('现有确诊', [list(i) for i in zip(fd['province'].values.tolist(), fd['nowConfirm'].values.tolist())], 'china')
    .add('治愈人数', [list(i) for i in zip(fd['province'].values.tolist(), fd['heal'].values.tolist())], 'china')
    .set_global_opts(
        title_opts=opts.TitleOpts(title='各地区疫情情况', pos_top='50%', pos_left='65%'),
        visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True),
        legend_opts=opts.LegendOpts(pos_left='90%', pos_top='60%')
    )
)
china_map.render('map.html')

腾讯全国疫情实时动态 + pyecharts可视化「建议收藏」

 代码如下

import time
import requests
import json
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Pie, Grid, Map


class EpidemicSpider(object):
    def __init__(self):
        self.sjc = int(time.time()*1000)
        self.url = f'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=_&_={self.sjc}'

    def parse_response(self):
        response = requests.get(self.url).text
        data_o = response.replace('_(', '')  # 替换开头
        data_t = data_o.replace(')', '')  # 替换结尾
        data_th = json.loads(data_t)['data']  # 拿到json数据中 data 的值
        china_data = json.loads(data_th)['areaTree'][0]['children']  # 拿到json数据中 children 的值
        # 设置一个数据集
        data_set = []
        for i in china_data:
            # 创建空字典
            data_dict = {}
            # 地区名称
            data_dict['province'] = i['name']
            # 疫情数据
            data_dict['nowConfirm'] = i['total']['nowConfirm']  # 现有确诊
            data_dict['confirm'] = i['total']['confirm']  # 累计确诊
            data_dict['dead'] = i['total']['dead']  # 死亡人数
            data_dict['heal'] = i['total']['heal']  # 治愈人数
            data_dict['wzz'] = i['total']['wzz']  # 本土无症状确诊
            data_dict['provinceLocalConfirm'] = i['total']['provinceLocalConfirm']  # 地区本地确诊
            data_set.append(data_dict)
        fd = pd.DataFrame(data_set)  # 制成表格
        # fd.to_excel('全国地区疫情数据.xls')  # 保存Excel
        fd2 = fd.sort_values(by=['nowConfirm'], ascending=False)  # 根据 'nowConfirm' 以多到少向下排序
        self.drawing(fd)

    
    def drawing(self, fd):
        china_map = (
            Map()
            # china--意为中国地图
            .add('现有确诊', [list(i) for i in zip(fd['province'].values.tolist(), fd['nowConfirm'].values.tolist())], 'china')
            .add('治愈人数', [list(i) for i in zip(fd['province'].values.tolist(), fd['heal'].values.tolist())], 'china')
            .set_global_opts(
                title_opts=opts.TitleOpts(title='各地区疫情情况', pos_top='50%', pos_left='65%'),
                visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True),
                legend_opts=opts.LegendOpts(pos_left='90%', pos_top='60%')
            )
        )
        china_map.render('map.html')

上面就是全国的疫情动态,下次还有全世界的

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24334.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信