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模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
python使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
wxPython使用系统剪切板的方法
Jun 16 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
python指定写入文件时的编码格式方法
Jun 07 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
python 如何实现遗传算法
Sep 22 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
IE8 原生JSON支持
2009/04/13 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
编写Python的web框架中的Model的教程
2015/04/29 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python入门教程之运算符与控制流
2016/08/17 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Python的几种主动结束程序方式
2019/11/22 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
老教师工作总结的自我评价
2013/09/27 职场文书
高中生学习的自我评价
2013/12/14 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
班级入场式解说词
2014/02/01 职场文书
毕业证委托书范文
2014/09/26 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
离婚协议书范文2016
2016/03/18 职场文书