美国确诊超100万!教你用Python画出全球疫情动态图

2020-05-06 15:44:32 浏览数 (1)


CDA数据分析师 出品

作者:Mika

数据:真达

后期:泽龙

【导语】:今天我们教你用Python绘制全球疫情动态图,技术部分请看第二部分。公众号后台,回复关键字“全球疫情”获取完整数据。

Show me data,用数据说话

今天我们用Python绘制 全球疫情动态图

点击下方视频,先睹为快:https://v.qq.com/x/page/q0959nn32lc.html

目前,全球新冠疫情还十分严峻。昨夜今晨,疫情突破多个标志性的统计节点。其中,全球累计确诊近296万例,累计死亡超20万例美国累计确诊超100万例,西班牙和意大利累计确诊均超过20万例。

01

全球疫情严峻

美国确诊超100万

根据世卫组织最新实时统计数据,截至欧洲中部时间28日10时(北京时间28日16时),全球范围内,新冠确诊病例较前一日增加76026例,达到2954222例;死亡病例较前一日增加3932例,达到202597例。

美国约翰斯·霍普金斯大学统计数据显示,在美国东部时间28日14时50分(北京时间29日2时50分)的数据显示,美国新冠确诊病例升至1002498例,死亡病例为57533例,确诊病例和死亡病例数都是全球最多。

那么作为一个技术号,我们也十分关注全球疫情的情况,之前我们写了篇:

??

用Python绘制—疫情影响下 美国申请失业险人数动态图

今天我们换个角度,用Python教你画出全球疫情动态图,话不多说!下面看到具体步骤:

02

用Python绘制

全球疫情动态图

此次我们使用Pandas Flourish制作疫情动态数据可视化视频,整个流程分为以下三步:

  1. 从网上获取数据
  2. 使用Pandas进行数据整理
  3. 使用Flourish的可视化模板制图

一、数据整理

我们使用pandas读入数据,本次使用数据来自于世卫组织-欧洲疾控中心统计网站,数据统计了2020.13.31日至2020.04.29日共207个国家的疫情日新增数据。

代码语言:javascript复制
*import* *pandas* *as* *pd*


/# 读入数据/
df_cov = pd.read_excel(‘./data/COVID-19-geographic-disbtribution-worldwide-2020-04-29.xlsx’) 
df_cov[‘dateRep’] = df_cov.dateRep.astype(‘str’)
df_cov.head() 

首先我们需要明确数据整理的目的,也就是我们需要将数据整理成怎样的格式,我们从Flourish网站找到了一份动态条形图的示例数据集,数据格式如下所示:

代码语言:javascript复制
df_sample = pd.read_csv(‘./data/Data.1588152303036.csv’)
df_sample.head() 

观察数据集,我们明确需要将数据整理成以上的格式,需要进行以下几步工作:

  1. 提取数据,此处我们提取日期(dateRep)、国家(countriesAndTerritories)、日新增确诊(cases)三列即可
  2. 通过日新增确诊人数计算每日累计确诊人数
  3. 对日期列进行摊平,按照国家和日期进行数据透视操作。
  4. 在网站上找到国旗url的地址,并合并数据集,增加Image_url列
  5. 通过翻译软件API获取中文名称。

具体代码如下,其中步骤4和步骤5为附加步骤,代码暂略。

代码语言:javascript复制
/# 提取数据/
df_sel = df_cov[['dateRep', 'cases', 'countriesAndTerritories']]


/# 累计求和-计算每日累计新增数据/
df_all = pd.DataFrame()


*for* countries *in* df_sel['countriesAndTerritories'].unique().tolist():
    df_one = df_sel[df_sel['countriesAndTerritories'] == countries] 
    df_one = df_one.sort_values('dateRep')
    df_one['cases_sum'] = df_one.cases.expanding().sum() 
    df_all = df_all.append(df_one, ignore_index=*True*) 

/# 数据摊平和数据透视/
df_expand = df_all.pivot_table(index='countriesAndTerritories', columns='dateRep', values='cases_sum') 


/# 空值填0/
df_expand = df_expand.fillna(0)
df_expand = df_expand.reset_index(drop=*False*)  
df_expand.head() 

整理数据如上图所示。接下来合并中文国家名和国旗URL数据,最终得到的数据格式如下,将数据导出成Excel格式。

代码语言:javascript复制
df.head() 

二、数据可视化

我们使用在线网站flourish进行制作,这个网站里提供了非常多的数据可视化模板,我们要做的工作就是从网上找到数据,然后将数据导入到模板里,设置好相应的速度、颜色、图标等信息就完成了。

操作的步骤非常简单。

第一步找到我们要制作的动态柱状变化图模板,可以看到,实例的第一个图形就是动态条形图,模板地址:https://app.flourish.studio/visualisation/2154934/edit

点击"Make your own",然后点击"Create visualisation" - 点击上方“Data”栏,我们就能看到数据就放在这里,然后点击“uplode data file”上传我们要用到的数据表格。

模板本身限定了表格的格式,如下图所示,我们设置B列是指标名称、C列是存放图标的URL列,D列之后是时间变化列。

第二步就是优化可视化图表,点击上方的“Preview”,就会发现模板自动就已经开始按照时间开始滚动了!

我们还可以进行一些美化和处理,右侧有个编辑栏,主要是要进行标签、颜色、播放速度、标尺大小、时间显示格式等细节的美化,按照自己的风格设置好后,一个常见的可视化动态视频就做完了。

最后配上音乐,让我们一起看到成品吧!

0 人点赞