海外疫情发展态势怎么样?python动态视频20秒告诉你
新型冠状病毒感染的肺炎疫情爆发以来,全球各国都采取措施开展战“疫”斗争。我国在党和政府的坚强领导下,疫情态势呈现不断向好的态势,国内新增确诊病例逐渐归零,而海外的疫情态势却不容乐观,每日新增病例都在不断扩大,下面用python带着大家制作1个海外国家疫情态势发展的视频,清晰了解海外国家疫情发展速度
第一步:寻找疫情数据接口
找了国内某大型新闻网站
然后打开流量分析工具开始分析数据来源,很容易就找到了返回某个国家全部疫情数据的接口,请求参数为:
根据上图我们可以发现,该请求以post方式进行,唯一变化的参数是国家名字,意味着我们要想获得所有国家的数据就要挨个模拟请求,那么怎么获取所有国家的名字呢?
不要着急,还在流量分析工具中寻找
找到这个,里面包含各个国家的名字,数据显得有些乱,其实就是json格式的数据,它的请球参数为:
Callback为回调函数,可以去掉,其他参数都不变,到这里思路已经捋顺了,开始撸代码吧。
第二步:爬取并整理数据
1.获得各个国家的名称
这一步没什么难度,就是简单的模拟请求,然后以json格式取出国家名字 。
2.获得每个国家的疫情数据
直接在上述获得国家名字的for循环下,组成新的url,开始post请求
最后以国家名字为key、疫情数据为值存入字典中。
3.将获得的数据存入表格中
需要注意2点,一是标记处的k值,是当前表格内已经保存数据的行数,所以下面从k+t行开始(表格保存从第0行开始,t初始值也为0);二是加了个sortdate函数,为什么要加这个函数呢?因为返回数据的日期为下图格式:
而02.10这种字符被程序自动识别为2.1,最后画图的时候就会出错,所以在此写了个sortdate函数,可以将02.01转换为2020年2月1日,该函数代码为:
保存在表格中的数据为:
第三步:画单张疫情排名图
1.用pandas读取表格中的数据,设置图形窗口大小
2.找出时间为'2020年3月20日'对应的数据,并以确诊人数(confirm)为排序依据,取出前十名,将数据反转
3.画出横向柱状图
结果为
4.将确诊人数放入图形中
结果为
5.设置标题、时间戳、坐标轴和网格线,增加图形美观
结果为:
一张图已经画完了,下面要根据时间轴让图片动起来。
第四步;依据时间轴画动态图
主要做法是将第三步的程序放入start函数中,添加date参数,再用matplotlib的 FuncAnimation()绘制动图,代码如下: