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装饰器
May 09 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 Python
python实现ID3决策树算法
Dec 20 Python
python求质数的3种方法
Sep 28 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
Python OrderedDict的使用案例解析
Oct 25 Python
python 字典访问的三种方法小结
Dec 05 Python
python如何把字符串类型list转换成list
Feb 18 Python
python 生成器需注意的小问题
Sep 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
一个取得文件扩展名的函数
2006/10/09 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
cument.execCommand()用法深入理解
2012/12/04 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
element form 校验数组每一项实例代码
2019/10/10 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
Python 在局部变量域中执行代码
2020/08/07 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
幼儿园秋游活动方案
2014/01/21 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
保护水资源的标语
2014/06/17 职场文书
安全口号大全
2014/06/21 职场文书
党小组考察意见
2015/06/02 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
python中如何对多变量连续赋值
2021/06/03 Python
python面向对象版学生信息管理系统
2021/06/24 Python
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang