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的一些用法分享
Oct 07 Python
浅谈Python的异常处理
Jun 19 Python
Python模拟随机游走图形效果示例
Feb 06 Python
Numpy掩码式数组详解
Apr 17 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
关于numpy数组轴的使用详解
Dec 05 Python
解析PyCharm Python运行权限问题
Jan 08 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
python如何写个俄罗斯方块
Nov 06 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
Python中取整的几种方法小结
2017/01/06 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python xpath获取页面注释的方法
2019/01/14 Python
简单了解django缓存方式及配置
2019/07/19 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
python如何写try语句
2020/07/14 Python
python爬取音频下载的示例代码
2020/10/19 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
HTML5 新事件 小结
2009/07/16 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
季度思想汇报
2014/01/01 职场文书
出纳员的岗位职责
2014/02/22 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
考试没考好检讨书
2015/05/06 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
高中班长竞选稿
2015/11/20 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis