Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化
一、安裝plotly庫(kù)
因?yàn)檫@部分內(nèi)容主要是用plotly庫(kù)進(jìn)行數(shù)據(jù)動(dòng)態(tài)展示,所以要先安裝plotly庫(kù)
pip install plotly
除此之外,我們對(duì)數(shù)據(jù)的處理還用了numpy和pandas庫(kù),如果你沒(méi)有安裝的話(huà),可以用以下命令一行安裝
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)生部門(mén)確認(rèn)備案的疫苗品牌,展示各廠商的疫苗在全球的分布
#讀取數(shù)據(jù) locations=pd.read_csv(r'data/locations.csv')
locations
這里我們的loacation中可以看到各個(gè)地方的疫苗和數(shù)據(jù)的來(lái)源與數(shù)據(jù)來(lái)源的網(wǎng)頁(yè)
三、數(shù)據(jù)處理
#發(fā)現(xiàn)數(shù)據(jù)中vaccines列中包含了多個(gè)品牌的情況,將這類(lèi)數(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() # 查看疫苗的種類(lèi)
四、可視化疫苗的分布情況
#繪圖 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()
各品牌分布:
- 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
六、組織寬表
#組織寬表 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
七、補(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
八、繪制堆疊柱狀圖
#繪制堆疊柱狀圖 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()
數(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主要分布于歐洲,且占份額很小
到此這篇關(guān)于Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化的文章就介紹到這了,更多相關(guān)Python疫苗研發(fā)情況可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python利用folium實(shí)現(xiàn)地圖可視化
- Python編寫(xiě)可視化界面的全過(guò)程(Python+PyCharm+PyQt)
- Python實(shí)現(xiàn)K-means聚類(lèi)算法并可視化生成動(dòng)圖步驟詳解
- python開(kāi)發(fā)實(shí)時(shí)可視化儀表盤(pán)的示例
- python數(shù)據(jù)分析之員工個(gè)人信息可視化
- 使用python實(shí)現(xiàn)三維圖可視化
- 關(guān)于Python可視化Dash工具之plotly基本圖形示例詳解
- python用pyecharts實(shí)現(xiàn)地圖數(shù)據(jù)可視化
- Python繪制K線(xiàn)圖之可視化神器pyecharts的使用
- Python繪制詞云圖之可視化神器pyecharts的方法
- Python實(shí)現(xiàn)疫情地圖可視化
- python 可視化庫(kù)PyG2Plot的使用
- python使用Streamlit庫(kù)制作Web可視化頁(yè)面
相關(guān)文章
解決tensorflow/keras時(shí)出現(xiàn)數(shù)組維度不匹配問(wèn)題
這篇文章主要介紹了解決tensorflow/keras時(shí)出現(xiàn)數(shù)組維度不匹配問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06淺談python 中的 type(), dtype(), astype()的區(qū)別
這篇文章主要介紹了淺談python 中的 type(), dtype(), astype()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04教你用Python創(chuàng)建微信聊天機(jī)器人
這篇文章主要手把手教你用Python創(chuàng)建微信聊天機(jī)器人,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Python中l(wèi)ogging日志的四個(gè)等級(jí)和使用
這篇文章主要介紹了Python中l(wèi)ogging日志的四個(gè)等級(jí)和使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11TensorFlow學(xué)習(xí)之分布式的TensorFlow運(yùn)行環(huán)境
這篇文章主要了TensorFlow學(xué)習(xí)之分布式的TensorFlow運(yùn)行環(huán)境的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02