Py学习  »  Python

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

CDA数据分析师 • 3 年前 • 880 次点击  




 CDA数据分析师 出品  

作者:Mika

数据:真达  

后期:泽龙 

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

Show me data,用数据说话

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

点击下方视频,先睹为快:


目前,全球新冠疫情还十分严峻。昨夜今晨,疫情突破多个标志性的统计节点。其中,全球累计确诊近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个国家的疫情日新增数据


*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网站找到了一份动态条形图的示例数据集,数据格式如下所示:


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为附加步骤,代码暂略。


/# 提取数据/
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格式。


df.head() 



二、数据可视化


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



操作的步骤非常简单。


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


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


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



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


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



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



关注CDA数据分析师公众号
回复关键字“全球疫情” 
获取详细数据代码

CDA数据分析师 


文出品:CDA数据分析师(ID: cdacdacda)



📚推荐阅读 READ MORE

(点击下方图片阅读)

数据解读:拿下60亿流量的《惊雷》都是哪些人在听?

8.3分口碑炸裂!潘粤明版《鬼吹灯》到底好看在哪儿?

 

📌CDA课程咨询


喜欢本篇内容请点个“在看”哦!❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62436
 
880 次点击