Python实战之疫苗研发情况可视化


Posted in Python onMay 18, 2021

一、安装plotly库

因为这部分内容主要是用plotly库进行数据动态展示,所以要先安装plotly库

pip install plotly

除此之外,我们对数据的处理还用了numpypandas库,如果你没有安装的话,可以用以下命令一行安装

pip install plotly numpy pandas
#导入所需库
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go

二、疫苗研发情况

各国采用的疫苗品牌概览

通过对各国卫生部门确认备案的疫苗品牌,展示各厂商的疫苗在全球的分布

#读取数据
locations=pd.read_csv(r'data/locations.csv')
locations

Python实战之疫苗研发情况可视化

这里我们的loacation中可以看到各个地方的疫苗和数据的来源与数据来源的网页

三、数据处理

#发现数据中vaccines列中包含了多个品牌的情况,将这类数拆为多条
vaccines_by_country=pd.DataFrame()
for i in locations.iterrows():
    df=pd.DataFrame({'Country':i[1].location,'vaccines':i[1].vaccines.split(',')})
    vaccines_by_country=pd.concat([vaccines_by_country,df])
vaccines_by_country['vaccines']=vaccines_by_country.vaccines.str.strip()# 去掉空格
vaccines_by_country.vaccines.unique() # 查看疫苗的种类

Python实战之疫苗研发情况可视化

四、可视化疫苗的分布情况

#绘图
fig=px.choropleth(vaccines_by_country,
                locations='Country',
                locationmode='country names',
                color='vaccines',
                facet_col='vaccines',
                facet_col_wrap=3)
fig.update_layout(width=1200, height=1000)
fig.show()

Python实战之疫苗研发情况可视化

各品牌分布:

  • Pfizer/BioNTech 主要分布于北美,南美的智利、厄瓜多尔,欧洲、沙特
  • Sputnik V 主要分布于俄罗斯、伊朗、巴基斯坦、非洲的阿尔及利亚以及南美的玻利维亚、阿根廷
  • Oxford/AstraZeneca 主要分布于欧洲、南亚、巴西
  • Moderna 主要分布在北美和欧洲
  • Sinopharm/Beijing 主要分布在中国、北非部分国家和南美的秘鲁
  • Sinovac 主要分布在中国、南亚、土耳其和南美
  • Sinopharm/Wuhan 主要仅分布于中国
  • Covaxin 主要分布于印度

综上可以发现,全球采用最广的仍是Pfizer/BioNTech,国产疫苗中Sinovac(北京科兴疫苗)输出到了较多国家

五、各品牌疫苗上市情况(仅部分国家)

根据数据集中提供的部分国家20年12月以来各品牌疫苗接种情况,分析各品牌上市时间及市场占有情况

#读取数据
vacc_by_manu=pd.read_csv(r'data/vaccinations-by-manufacturer.csv')
#定义函数,用于从原始数据中组织宽表
def query(df,country,date,vaccine):
    try:
        result=df.loc[(df.location==country)&(df.date==date)&(df.vaccine==vaccine)].total_vaccinations.iloc[0]
    except:
        result=np.nan
    return result
vacc_by_manu

Python实战之疫苗研发情况可视化

六、组织宽表

#组织宽表
vacc_combined=pd.DataFrame(columns=['location','date','Pfizer/BioNTech', 'Sinovac', 'Moderna', 'Oxford/AstraZeneca'])
for i in vacc_by_manu.location.unique():
    for j in vacc_by_manu.date.unique():
        for z in vacc_by_manu.vaccine.unique():
            result=query(vacc_by_manu,i,j,z)
            if vacc_combined.loc[(vacc_combined.location==i)&(vacc_combined.date==j)].empty:
                result_df=pd.DataFrame({'location':i,'date':j,z:result},index=['new'])
                vacc_combined=pd.concat([vacc_combined,result_df])
            else:
                vacc_combined.loc[(vacc_combined.location==i)&(vacc_combined.date==j),z]=result
vacc_combined

Python实战之疫苗研发情况可视化

七、补全缺失数据

#补全缺失数据
temp=pd.DataFrame()
for i in vacc_combined.location.unique():#按国家进行不全
    r=vacc_combined.loc[vacc_combined.location==i]
    r=r.fillna(method='ffill',axis=0)#先按最近一次的数据进行补全
    temp=pd.concat([temp,r])#若没有最近的数据,认为该项为0
temp=temp.fillna(0).reset_index(drop=True)
temp

Python实战之疫苗研发情况可视化

八、绘制堆叠柱状图

#绘制堆叠柱状图
fig=px.bar(temp,
        x='location',
        y=vacc_by_manu.vaccine.unique(),
        animation_frame='date',
        color_discrete_sequence=['#636efa','#19d3f3','#ab63fa','#00cc96']#为了查看方便,品牌颜色与前一部分对应
        )
fig.show()

Python实战之疫苗研发情况可视化

数据中主要涉及Pfizer/BioNTech、Sinovac、Moderna、Oxford/AstraZeneca 4个品牌,其中:

  • Pfizer/BioNTech 上市时间最早,20年12月24日时即已经开始在智利接种了,之后在12月底开始在欧洲接种,21年1月12日开始在美国接种
  • Sinovac 21年2月2日开始在智利接种Moderna 21年1月8日先在意大利开始接种,随后12日即开始在美国大量接种,最终在欧洲及美国均大量接种
  • Oxford/AstraZeneca 21年2月2日先在意大利开始接种,随后即在欧洲开始接种
  • 整体上看,Pfizer/BioNTech上市最早,且在全球占有份额最大,Moderna 随后上市,主要占据美国和欧洲市场,Sinovac、Oxford/AstraZeneca上市均较晚,其中Sinovac占据了智利的大部分市场份额,而Oxford/AstraZeneca主要分布于欧洲,且占份额很小

到此这篇关于Python实战之疫苗研发情况可视化的文章就介绍到这了,更多相关Python疫苗研发情况可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python面向对象特殊成员
Apr 24 Python
django使用html模板减少代码代码解析
Dec 12 Python
Python3.5 创建文件的简单实例
Apr 26 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
详解python之heapq模块及排序操作
Apr 04 Python
Python的形参和实参使用方式
Dec 24 Python
Python实现计算图像RGB均值方式
Jun 04 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
python 实现表情识别
Nov 21 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 Python
教你漂亮打印Pandas DataFrames和Series
May 29 Python
Python打包exe时各种异常处理方案总结
使用python向MongoDB插入时间字段的操作
May 18 #Python
OpenCV3.3+Python3.6实现图片高斯模糊
Python中for后接else的语法使用
python源码剖析之PyObject详解
Python3 如何开启自带http服务
May 18 #Python
安装pytorch时报sslerror错误的解决方案
You might like
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
用JS实现的一个include函数
2007/07/21 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
大众服装店创业计划书范文
2014/01/01 职场文书
单位人事专员介绍信
2014/01/11 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
市场拓展计划书
2014/05/03 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
店铺转让协议书
2015/01/29 职场文书
老乡会致辞
2015/07/28 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android