点击上方“早起python”,关注公众号

满满干货,极速送达

一、前言

最近国内疫情已经有所好转,但是国外的情况不容乐观,那么怎样用python去制作动态图表来看全球疫情变化趋势呢?比如下面的国内外疫情发展趋势

还是全球疫情发展趋势⬇️

其实用python实现并不难,简单来说就分为三步:

  • 获取数据(requests)

  • 数据清洗(pandas)

  • 数据可视化(pyecharts)

那么我们就来一点一点讲解吧!

二、数据获取与处理

疫情数据获取并不是很难,在目前互联网上已经有许多提供数据的网站,比如丁香园、腾讯新闻、百度新闻等,为了省事直接GitHub上找找看有没有现成的接口,很轻松就找到了丁香园数据的API,

接下来两行命令就能拿下所有历史数据

data = requests.get('https://lab.isaaclin.cn/nCoV/api/area?latest=0')data = data.json()

来看下数据

很明显这样的数据是没有办法去做分析的,所以接下来的重点就是如何清洗这一堆数据,主要又分为下面两块:

  • 数据整理:原始数据整理,由 json格式转换为方便分析的dataframe格式

  • 数据清洗:原数据由于API采集的机制。包含大量重复数据、无效数据、缺失数据所以需要对这些数据进行处理

先来看下数据量

可以看到一共采集到了7584条数据,由于脏数据比较多,所以这一部分的工作量是比较大的,因此我们不在这里使用太多篇幅去讲如何一步一步提取出我们想要的数据,会单独写一篇数据处理过程的文章,不过还是来看看经历了哪些过程与代码吧!

首先要将所有数据从字典提取出来并对时间戳进行转换,然后将数据保存到pandas里

data = requests.get('https://lab.isaaclin.cn/nCoV/api/area?latest=0')data = data.json()res = data['results']df = pd.DataFrame(res)def time_c(timeNum):    timeTemp = float(timeNum/1000)    tupTime = time.localtime(timeTemp)    stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)    return stadardTime

for i in range(len(df)):

    df.iloc[i,16] = time_c(df.iloc[i,16])

for i in range(len(df)):

    df.iloc[i,16] = df.iloc[i,16][5:10]

现在数据就成了这样

这样看起来就舒服多了,但是还是不可以使用,因为API每天会采集很多次数据,所以里面有很多重复数据和异常数据,所以接下来重点处理这一部分。对于重复数据我们只保留最新一个,对于空数据我们选择前一天的数据填充。

#去重部分代码tem = df1[df1['updateTime'] == '03-02']tem = tem.drop_duplicates(['provinceShortName'], keep='last')for i in date[1:41]:    tem1 = df1[df1['updateTime'] == i]    tem1 = tem1.drop_duplicates(['provinceName'], keep='last')    tem = tem.append(tem1)

tem = tem.reset_index(drop=True)tem

由于篇幅原因,就不再贴出更多的代码,我们来看下最终处理完的数据

三、数据可视化

数据可视化,我们依旧选择之前讲解过很多次的pyecharts,主要使用的就是里面的Timeline:时间线轮播多图,简单来说就是在每一个时间点生成一张图然后滚动播放,有点像小时候的手绘小人书一样,所以我们的数据就需要是时间序列数据,那么具体关于怎样使用,参数如何调整请关注后续单独的可视化讲解文章,直接看代码与分析吧。首先是国内外疫情趋势

from pyecharts.faker import Fakerfrom pyecharts import options as optsfrom pyecharts.charts import Bar, Page, Pie, Timeline,Grid

def timeline_bar() -> Timeline:    x = ['国内','国外']    tl = Timeline()    tl = Timeline()    tl.add_schema(is_auto_play = True,    play_interval = 500,    is_loop_play = False)    k= 0    for i in date:        bar = (            Line()            .add_xaxis(date)            .add_yaxis("国内", hs(c1,k))            .add_yaxis("国外", hs(c,k))            .extend_axis(            yaxis=opts.AxisOpts(            )        )            .set_series_opts(            areastyle_opts=opts.AreaStyleOpts(opacity=0.5),            label_opts=opts.LabelOpts(is_show=False),        )            .set_global_opts(title_opts=opts.TitleOpts("{}国内外疫情趋势".format(i)))        )        tl.add(bar, "{}".format(i))        k = k + 1    return tltimeline_bar().render_notebook()

可以看出,国内的增长已经处于平缓状态,而国外自二月底来突然爆发,目前还处于上升期,这也是为什么现在要严防境外输入病例。再来看看国外具体的病例占比吧(微信GIF只能上传5M所以有点糊)

可以看出在最近几天韩国、日本、意大利突然爆发,这三个国家的病例数量就占到了约75%。最后再来看看全球疫情的变化趋势吧!

四、结束语

至此,我们就完全使用python对疫情数据进行了一次动态可视化,回顾整个过程其实并没有太多过于复杂的步骤,更多的是关于pandas和pyecharts基础功能的使用,如果想了解全部的数据清洗过程可以关注早起python后续的技术分享文章,需要直接拿数据去可视化的朋友也可以直接在早起python公众号内获取,最后还是要说一句,疫情仍未散去,大家要继续做好防护!中国加油!

●情人节用python写个网站对ta表白吧!

●数据工程师需要掌握的18个python库

●更高级的数据可视化,使用pyecharts制作精美图表

●钉钉在线求饶?五星分期付款?爬取钉钉App Store真实评价数据并分析

在看点这里

python制作动态心电图_用python制作动态图表看全球疫情变化趋势相关推荐

  1. Python 制作动态图表,看全球疫情变化趋势

    作者 | 刘早起早起 责编 | 屠敏 前言 最近国内疫情已经有所好转,但是国外的情况不容乐观,那么怎样用Python去制作动态图表来看全球疫情变化趋势呢?比如下面的国内外疫情发展趋势: 还是全球疫情发 ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. 玩转PYthon,用Python绘制全球疫情变化地图(好东西,值得一看~~~)

    用Python绘制全球疫情变化地图 目前全球疫情仍然比较严重,为了能清晰地看到疫情爆发以来至现在全球疫情的变化趋势,我绘制了一张疫情变化地图,完整代码共 230 行,需要的朋友在公众号回复关键字 疫情 ...

  5. python实现动态地图_使用Python、Geopandas和Matplotlib制作gif动态地图

    不需要Photoshop:仅使用Python和命令行制作动画图表. 作为一种编程语言,Python非常灵活.这使得有时可以在几行代码中进行大量不同的可视化成为可能.但是现在有了很多不同的图表网站和软件 ...

  6. python调用报表制作工具_使用Python轻松制作漂亮的表格

    Python太有用而且很方便 图表可以用matplotlib轻松制作,数值计算只要有numpy就行. 最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏. 我突然想知道:"是否 ...

  7. python 三维地球_用python生成地球运动的动态模拟动态图

    python作为一门简单易学且应用范围极广的语言有着其他语言无法比拟的优势,通过python可以实现各种各样的功能,例如我们可以利用python matplotlib的绘图库实现各种动态模拟仿真,在科 ...

  8. python声明数组_在Python中如何声明动态数组

    I want to declare an Array and all items present in the ListBox Should Be deleted irrespective of th ...

  9. python 免费空间_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

最新文章

  1. Gson:我爸是 Google
  2. 一场“交通进化”将至: 5G带给车联网与自动驾驶哪些升级?
  3. C语言中的位运算和逻辑运算
  4. Java IO流之转换流
  5. 支付宝支付-刷卡支付(条码支付)
  6. ai圆角插件_【干货满满】AI软件技巧排版所需
  7. 分享一个Ubuntu16.0.4安装MySQL5.7脚本
  8. 多种问题袭来:崩溃在边缘的“直播赚钱路”
  9. es配置中文和拼音分词器
  10. 目标建立——SMART法则
  11. android 9下载地址,狂野飙车9安卓版下载地址 最新版本下载
  12. 谷歌与Facebook的关系数据库之战
  13. 微信支付 postman_支付宝微信刷脸支付系统搭建服务商平台怎么做
  14. Win平台ZIP版本MySql启动问题
  15. 【Practical】蒙特卡罗法及其应用
  16. XML文件怎么添加注释
  17. json mysql 字段 默认值_MySQL新增JSON类型字段的使用总结
  18. opensips3.0之新工具opensips-cli
  19. python中byte2array报错_python基础-bytes和bytearray的用法
  20. JQCloud标签云、词云展示

热门文章

  1. Android 8.0系统的应用图标不显示问题
  2. 一大波特斯拉人形机器人上线,马斯克震撼官宣2款新车!
  3. 一加3t氢android8_国内最快:一加3/3T已升级到基于安卓8.0的氢OS系统
  4. 氢os android8,最新!氢OS 11正式发布:颠覆安卓流畅体验,一加 8 系列抢先尝鲜...
  5. 常见的代码坏味道--多层嵌套,缺乏封装
  6. gitlab 使用外部 nginx
  7. php配置辨别图片形式,基于OpenCV的PHP图像人脸辨别技术(转载)
  8. 用IDEA进行Java后台开发(二)
  9. iOS中常用的设计模式
  10. strcpy 实现原理