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 09 Python
Python与Java间Socket通信实例代码
Mar 06 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python多进程实现文件下载传输功能
Jul 28 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
python中sympy库求常微分方程的用法
Apr 28 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 Python
Pycharm plot独立窗口显示的操作
Dec 11 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
WHOIS类的修改版
2006/10/09 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
python解析xml文件操作实例
2014/10/05 Python
Python实现批量修改文件名实例
2015/07/08 Python
Python之py2exe打包工具详解
2017/06/14 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
C#面试题
2016/05/06 面试题
ajax是什么及其工作原理
2012/02/08 面试题
团员的自我评价
2013/12/01 职场文书
业务员岗位职责范本
2013/12/15 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
企业消防安全责任书
2014/07/23 职场文书