前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:谦睿科技

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun

Python

Python的设计哲学是“优雅、明确、简单”。它的语言方式与自然语言很接近 ,具有很好的可阅读性,当然理解起来也就不是晦涩难懂,更容易让人亲近。

Python语言(Python原意是一种“大蟒蛇”)

Python在最新的编程语言排名中第三名

目前我国也正在逐步将Python纳入教学体系,浙江省已纳入高考,7选3。山东省甚至将其作为小学六年级的信息学教材。南京市列入中考特招项。

当前全球的疫情还在持续中,我们如用python来制作疫情趋势变化图?

在遇到难题时当然要学会去GitHub找找思路,只需要在GitHub上搜索疫情数据就能看到很多大神做的疫情数据爬虫

甚至有些会项目提供数据接口(https://lab.isaaclin.cn/nCoV/),按照使用说明调用端口即可。注意请求频率哦

AkShare 是基于 Python 的开源数据接口库, 目的是实现对期货, 期权, 基金等衍生金融产品和另类数据从数据采集, 数据清洗加工, 到数据下载的工具, 满足金融数据科学家, 数据科学爱好者在数据获取方面的需求。那么这个提供金融数据的库目前也采集了网易和丁香园的疫情数据提供给大家

使用起来也很简单

  1. import akshare as ak
  2. epidemic_hist_all_df = ak.epidemic_hist_all() #获取全部历史数据

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

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

  • 获取数据(requests)
  • 数据清洗(pandas)
  • 数据可视化(pyecharts)

数据获取与处理

疫情数据获取并不是很难,在目前互联网上已经有许多提供数据的网站。

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

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

先来看下数据量

可以看到一共采集到了7584条数据,由于脏数据比较多,所以这一部分的工作量是比较大的。

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

  1. data = requests.get('https://lab.isaaclin.cn/nCoV/api/area?latest=0')
  2. data = data.json()
  3. res = data['results']
  4. df = pd.DataFrame(res)
  5. def time_c(timeNum):
  6.     timeTemp = float(timeNum/1000)
  7.     tupTime = time.localtime(timeTemp)
  8.     stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)
  9.     return stadardTime
  10.  
  11. for i in range(len(df)):
  12.  
  13.     df.iloc[i,16] = time_c(df.iloc[i,16])
  14.  
  15. for i in range(len(df)):
  16.  
  17.     df.iloc[i,16] = df.iloc[i,16][5:10]

现在数据就成了这样

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

  1. #去重部分代码
  2. tem = df1[df1['updateTime'] == '03-02']
  3. tem = tem.drop_duplicates(['provinceShortName'], keep='last')
  4. for i in date[1:41]:
  5.     tem1 = df1[df1['updateTime'] == i]
  6.     tem1 = tem1.drop_duplicates(['provinceName'], keep='last')
  7.     tem = tem.append(tem1)
  8.  
  9. tem = tem.reset_index(drop=True)
  10. tem

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

数据可视化

首先是国内外疫情趋势

  1. public class MyActivity extends AppCompatActivity from pyecharts.faker import Faker
  2. from pyecharts import options as opts
  3. from pyecharts.charts import Bar, Page, Pie, Timeline,Grid
  4.  
  5. def timeline_bar() -> Timeline:
  6.     x = ['国内','国外']
  7.     tl = Timeline()
  8.     tl = Timeline()
  9.     tl.add_schema(is_auto_play = True,
  10.     play_interval = 500,
  11.     is_loop_play = False)
  12.     k= 0
  13.     for i in date:
  14.         bar = (
  15.             Line()
  16.             .add_xaxis(date)
  17.             .add_yaxis("国内", hs(c1,k))
  18.             .add_yaxis("国外", hs(c,k))
  19.             .extend_axis(
  20.             yaxis=opts.AxisOpts(
  21.             )
  22.         )
  23.             .set_series_opts(
  24.             areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
  25.             label_opts=opts.LabelOpts(is_show=False),
  26.         )
  27.             .set_global_opts(title_opts=opts.TitleOpts("{}国内外疫情趋势".format(i)))
  28.         )
  29.         tl.add(bar, "{}".format(i))
  30.         k = k + 1
  31.     return tl
  32. timeline_bar().render_notebook()

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

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

至此,我们就完全使用Python对疫情数据进行了一次动态可视化,最后还是要说一句,疫情仍未散去,大家要继续做好防护!

果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

获取方式,私信小编 “ 资料 ”,即可免费获取哦

用python画出全球疫情趋势变化图的更多相关文章

  1. 利用python画出动态高优先权优先调度

    之前写过一个文章. 利用python画出SJF调度图 动态高度优先权优先调度 动态优先权调度算法,以就绪队列中各个进程的优先权作为进程调度的依据.各个进程的优先权在创建进程时所赋予,随着进程的推进或其 ...

  2. 用初中代数结合python画出正方形

    在屏幕上打印类似下面的图形: 常规画正方形的算法: 这几乎是初学所有计算机语言时都会遇到的问题.算法都大致类似,就是找出打印规律然后用计算机语句表达出来.最常规的算法是:输入数字n就打印n行,首行和尾 ...

  3. python画出心形图

    程序员表达爱的方式真是多种多样.比如,用python来画一个心型,献给梦中的情人,代码如下: from turtle import * pensize(1) pencolor('red') fillc ...

  4. Python爬取全球疫情数据,实现可视化显示地图数据(附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 武汉地区,目前已经实现住院患者清零了,国内疫情已经稳定,然而中国以外新冠确 ...

  5. 利用python画出SJF调度图

    最先发布在csdn.本人原创. https://blog.csdn.net/weixin_43906799/article/details/105510046 SJF算法: 最短作业优先(SJF)调度 ...

  6. 程序员如何 10 分钟用 Python 画出蒙娜丽莎?

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路   ...

  7. 用Python绘制全球疫情变化地图

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

  8. 【疫情动态条形图】用Python开发全球疫情排名动态条形图bar_chart_race

    一.开发背景 你好,我是 @马哥python说 ,这是我用Python开发的全球疫情动态条形图,演示效果: https://www.zhihu.com/zvideo/15603276220259696 ...

  9. 用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我被狗咬了 在谈及数据可视化的时候,我们通常都会使用到matplo ...

随机推荐

  1. hdu1226超级密码 bfs

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1226/ 题目大意是:寻找一个五百位之内的C进制密码,该密码是N的正整数倍,而且只能用给定的数构成密码,求这样的密 ...

  2. Aleax prize (开放域聊天系统比赛)2018冠军论文阅读笔记

    Abstract Gunrock是一种社交机器人,旨在让用户参与开放域的对话.我们使用大规模的用户交互数据来迭代地改进了我们的机器人,使其更具能力和人性化.在2018年Alexa奖的半决赛期间,我们的 ...

  3. Servlet(五)----Request登录案例

    ##  案例:用户登录 准备工作: 准备Maven  配置pom.xml <?xml version="1.0" encoding="UTF-8"?> ...

  4. vue2源码分析:patch函数

    目录 1.patch函数的脉络 2.类vnode的设计 3.createPatch函数中的辅助函数和patch函数 4.源码运行展示(DEMO) 一.patch函数的脉络 首先梳理一下patch函数的 ...

  5. Java基础语法(7)-数组

    title: Java基础语法(7)-数组 blog: CSDN data: Java学习路线及视频 1.数组的概述 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并 ...

  6. vue - Babel之babel-polyfill、babel-runtime、transform-runtime

    引言 babel默认只转换新的 JavaScript 语法,比如箭头函数.扩展运算(spread). 不转换新的 API,例如Iterator.Generator.Set.Maps.Proxy.Ref ...

  7. OpenCV-Python Shi-tomas拐角检测器和益于跟踪的特征 | 三十八

    目标 在本章中, 我们将学习另一个拐角检测器:Shi-Tomasi拐角检测器 我们将看到以下函数:cv.goodFeaturesToTrack() 理论 在上一章中,我们看到了Harris Corne ...

  8. 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...

    初来乍到,这个人说话容易让人觉得"狂". "我们将比赛结果提交上去,果不其然,是第一名的成绩."当他说出这句话的时候,表情没有一丝波澜,仿佛一切顺理成章. 他说 ...

  9. 机器学习算法系列:FM分解机

    在线性回归中,是假设每个特征之间独立的,也即是线性回归模型是无法捕获特征之间的关系.为了捕捉特征之间的关系,便有了FM分解机的出现了.FM分解机是在线性回归的基础上加上了交叉特征,通过学习交叉特征的权 ...

  10. 「MoreThanJava」当大学选择了计算机之后应该知道的

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...