利用python爬取全国疫情信息并绘制中国疫情图

利用python爬取全国疫情信息并绘制中国疫情图

数据爬取

1、进入腾讯疫情实时更新首页,网址为:https://news.qq.com/zt2020/page/feiyan.htm#/
2、寻找数据所在的API,https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province=省份
3、构建一个excle表格,内容为中国各个省份的名称。
4、爬取结果为json数据,通过解析,得到想要的内容。

import json
import requests
import pandas as pd
shengfen=pd.read_excel('省份.xls',index_col=0)
data1=[]
for j in range(34):   
    url='https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province='+shengfen.iloc[j,0]
    html = requests.get(url)
    html.text
    data=json.loads(html.text)['data']
    for i in data:
        data2={}
        data2['日期']=str(i['year'])+'年'+i['date'][0:2]+'月'+i['date'][3:5]+'日'
        data2['省份']=i['province']
        data2['确诊']=i['confirm']
        data2['死亡']=i['dead']
        data2['治愈']=i['heal']
        data2['新增确诊']=i['newConfirm']
        data2['新增治愈']=i['newHeal']
        data2['新增死亡']=i['newDead']
        data1.append(data2)
df=pd.DataFrame(data1)
df.to_excel('全国疫情历史数据.xlsx')

疫情地图绘制

1、利用python的pyecharts库来绘制中国地图
2、本文以中国累计确诊人数为例

import pandas as pd
import numpy as np
from pyecharts.charts import Map,Page,Timeline,Bar
from pyecharts import options as opts
data = pd.read_excel('.\\疫情采集和数据分析\全国疫情历史数据.xls')
data1=data.groupby('省份')
z=[['上海', 307030],['云南', 70636], ['内蒙古', 83305],['北京', 279327],['台湾', 164154],['吉林', 50358],['四川', 231099],['天津', 77764],['宁夏', 26343],['安徽', 350955],['山东', 283914],['山西', 68676],['广东', 608068],['广西', 91166],['新疆', 179791],['江苏', 233516],['江西', 331116],['河北', 131779],['河南', 452710],['浙江', 452542],['海南', 60422],['湖北', 23701957],['湖南', 362204],['澳门', 14446],['甘肃', 54198],['福建', 139069],['西藏', 359],['贵州', 51781],['辽宁', 76997],['重庆', 207060],['陕西', 128029],['青海', 6449],['香港', 1222340],['黑龙江', 304942]]#这里一定要把数据重新写一遍,不然会报错
m2=(Map()
.add("全国疫情累计确诊人数",z,"china",is_map_symbol_show=False)
.set_global_opts(
    title_opts=opts.TitleOpts(title="Map-VisualMap(分段型)"),
    visualmap_opts=opts.VisualMapOpts(max_=23701957,min_=359,is_piecewise=True,
                                     pieces=[
                                         {"min":15000000,"label":"大于15000000"},
                                         {"min":8000000,"max":14999999,"label":"大于7999999"},
                                         {"min":150000,"max":7999999,"label":"大于149999"},
                                         {"min":80000,"max":149999,"label":"大于49999"},
                                         {"min":10000,"max":79999,"label":"大于4999"},
                                         {"min":359,"max":9999,"label":"大于0"},  
                                     ])
))
m2.render('ymx.html')

在这里插入图片描述
效果图十分好看,有任何问题可与我随时交流。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值