溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

發(fā)布時(shí)間:2021-05-19 10:00:20 來(lái)源:億速云 閱讀:124 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

一、安裝plotly庫(kù)

因?yàn)檫@部分內(nèi)容主要是用plotly庫(kù)進(jìn)行數(shù)據(jù)動(dòng)態(tài)展示,所以要先安裝plotly庫(kù)

pip install plotly

除此之外,我們對(duì)數(shù)據(jù)的處理還用了numpypandas庫(kù),如果你沒(méi)有安裝的話,可以用以下命令一行安裝

pip install plotly numpy pandas
#導(dǎo)入所需庫(kù)
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go

二、疫苗研發(fā)情況

各國(guó)采用的疫苗品牌概覽

通過(guò)對(duì)各國(guó)衛(wèi)生部門確認(rèn)備案的疫苗品牌,展示各廠商的疫苗在全球的分布

#讀取數(shù)據(jù)
locations=pd.read_csv(r'data/locations.csv')
locations

Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

這里我們的loacation中可以看到各個(gè)地方的疫苗和數(shù)據(jù)的來(lái)源與數(shù)據(jù)來(lái)源的網(wǎng)頁(yè)

三、數(shù)據(jù)處理

#發(fā)現(xiàn)數(shù)據(jù)中vaccines列中包含了多個(gè)品牌的情況,將這類數(shù)拆為多條
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實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

四、可視化疫苗的分布情況

#繪圖
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實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

各品牌分布:

  • Pfizer/BioNTech 主要分布于北美,南美的智利、厄瓜多爾,歐洲、沙特

  • Sputnik V 主要分布于俄羅斯、伊朗、巴基斯坦、非洲的阿爾及利亞以及南美的玻利維亞、阿根廷

  • Oxford/AstraZeneca 主要分布于歐洲、南亞、巴西

  • Moderna 主要分布在北美和歐洲

  • Sinopharm/Beijing 主要分布在中國(guó)、北非部分國(guó)家和南美的秘魯

  • Sinovac 主要分布在中國(guó)、南亞、土耳其和南美

  • Sinopharm/Wuhan 主要僅分布于中國(guó)

  • Covaxin 主要分布于印度

綜上可以發(fā)現(xiàn),全球采用最廣的仍是Pfizer/BioNTech,國(guó)產(chǎn)疫苗中Sinovac(北京科興疫苗)輸出到了較多國(guó)家

五、各品牌疫苗上市情況(僅部分國(guó)家)

根據(jù)數(shù)據(jù)集中提供的部分國(guó)家20年12月以來(lái)各品牌疫苗接種情況,分析各品牌上市時(shí)間及市場(chǎng)占有情況

#讀取數(shù)據(jù)
vacc_by_manu=pd.read_csv(r'data/vaccinations-by-manufacturer.csv')
#定義函數(shù),用于從原始數(shù)據(jù)中組織寬表
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實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

六、組織寬表

#組織寬表
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實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

七、補(bǔ)全缺失數(shù)據(jù)

#補(bǔ)全缺失數(shù)據(jù)
temp=pd.DataFrame()
for i in vacc_combined.location.unique():#按國(guó)家進(jìn)行不全
    r=vacc_combined.loc[vacc_combined.location==i]
    r=r.fillna(method='ffill',axis=0)#先按最近一次的數(shù)據(jù)進(jìn)行補(bǔ)全
    temp=pd.concat([temp,r])#若沒(méi)有最近的數(shù)據(jù),認(rèn)為該項(xiàng)為0
temp=temp.fillna(0).reset_index(drop=True)
temp

Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

八、繪制堆疊柱狀圖

#繪制堆疊柱狀圖
fig=px.bar(temp,
        x='location',
        y=vacc_by_manu.vaccine.unique(),
        animation_frame='date',
        color_discrete_sequence=['#636efa','#19d3f3','#ab63fa','#00cc96']#為了查看方便,品牌顏色與前一部分對(duì)應(yīng)
        )
fig.show()

Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析

數(shù)據(jù)中主要涉及Pfizer/BioNTech、Sinovac、Moderna、Oxford/AstraZeneca 4個(gè)品牌,其中:

  • Pfizer/BioNTech 上市時(shí)間最早,20年12月24日時(shí)即已經(jīng)開(kāi)始在智利接種了,之后在12月底開(kāi)始在歐洲接種,21年1月12日開(kāi)始在美國(guó)接種

  • Sinovac 21年2月2日開(kāi)始在智利接種Moderna 21年1月8日先在意大利開(kāi)始接種,隨后12日即開(kāi)始在美國(guó)大量接種,最終在歐洲及美國(guó)均大量接種

  • Oxford/AstraZeneca 21年2月2日先在意大利開(kāi)始接種,隨后即在歐洲開(kāi)始接種

  • 整體上看,Pfizer/BioNTech上市最早,且在全球占有份額最大,Moderna 隨后上市,主要占據(jù)美國(guó)和歐洲市場(chǎng),Sinovac、Oxford/AstraZeneca上市均較晚,其中Sinovac占據(jù)了智利的大部分市場(chǎng)份額,而Oxford/AstraZeneca主要分布于歐洲,且占份額很小

Python主要用來(lái)做什么

Python主要應(yīng)用于:1、Web開(kāi)發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開(kāi)發(fā);5、游戲開(kāi)發(fā);6、桌面應(yīng)用開(kāi)發(fā)。

關(guān)于“Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI