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使用Socket(Https)Post登录百度的实现代码
May 18 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
python数字图像处理之高级形态学处理
Apr 27 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
详解python的异常捕获
Mar 03 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
10个实用的PHP代码片段
2011/09/02 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
python圣诞树编写实例详解
2020/02/13 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
毕业生求职简历中的自我评价
2013/10/18 职场文书
中学家长会邀请函
2014/02/03 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
节约用水广告语60条
2019/11/14 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript