海外疫情发展态势怎么样?python动态视频20秒告诉你

2020-03-22  本文已影响0人  小笨鸟_1d2f

新型冠状病毒感染的肺炎疫情爆发以来,全球各国都采取措施开展战“疫”斗争。我国在党和政府的坚强领导下,疫情态势呈现不断向好的态势,国内新增确诊病例逐渐归零,而海外的疫情态势却不容乐观,每日新增病例都在不断扩大,下面用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()绘制动图,代码如下:

上一篇下一篇

猜你喜欢

热点阅读