丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給skura
發(fā)送

0

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

本文作者: skura 2020-02-18 11:35
導(dǎo)語:數(shù)據(jù)分析實(shí)戰(zhàn)案例,含代碼

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

CDC 發(fā)布在 Unsplash 上的照片              

一種最初在中國城市武漢被發(fā)現(xiàn)的病毒,現(xiàn)在已經(jīng)傳播到世界上十幾個(gè)國家,引發(fā)了前所未有的健康和經(jīng)濟(jì)危機(jī)。              

世界衛(wèi)生組織(簡稱世衛(wèi)組織)宣布武漢冠狀病毒爆發(fā)為「國際關(guān)注的公共衛(wèi)生突發(fā)事件」。              

在本文中,我們將簡要回顧當(dāng)前的危機(jī),然后深入研究 Kaggle 的「Novel Corona Virus 2019 Dataset」。我創(chuàng)建了一個(gè) GitHub repo,以供大家發(fā)表自己的見解。              

什么是冠狀病毒?              

據(jù)世衛(wèi)組織稱,冠狀病毒(CoV)是一個(gè)病毒大家族,它們引起的疾病很多,包括普通感冒和更嚴(yán)重的疾病,如中東呼吸綜合征(MERS-CoV)和嚴(yán)重急性呼吸綜合征(SARS-CoV)。              

新型冠狀病毒(nCoV)是一種新的病毒株,此前尚未被人類發(fā)現(xiàn)。最近爆發(fā)的病毒被稱為 2019-nCoV 或武漢冠狀病毒。              

我們面臨的危機(jī)              

此前,據(jù)《紐約時(shí)報(bào)》的一篇報(bào)道,「確診感染人數(shù)上升至 37198 人」,「中國死亡人數(shù)上升至811人,超過了非典疫情造成的死亡人數(shù)」。              

中國有 16 個(gè)城市,超過 5000 萬人口,正處于封鎖狀態(tài)。全球各地的航空公司都取消了往返中國的航班。一些國家正通過特別航班疏散本國公民,并進(jìn)一步對他們實(shí)施嚴(yán)格的隔離。              

更糟糕的是,中國股市暴跌,全球股市受到了影響。一些分析人士預(yù)測,疫情對全球經(jīng)濟(jì)構(gòu)成的威脅,有可能引發(fā)深遠(yuǎn)的政治后果。              

數(shù)據(jù)集簡介              

約翰霍普金斯大學(xué)收集了「Novel Corona Virus 2019 Dataset」,并將該數(shù)據(jù)集發(fā)表在 Kaggle 上。該小組從世界衛(wèi)生組織、當(dāng)?shù)丶部刂行暮兔襟w等不同渠道收集了這些數(shù)據(jù)。他們還創(chuàng)建了一個(gè)實(shí)時(shí)儀表盤來監(jiān)控病毒的傳播

免責(zé)聲明:請注意,數(shù)據(jù)集沒有更新,因此下面記錄的結(jié)果可能不是當(dāng)前現(xiàn)狀的真實(shí)反映。              

導(dǎo)入庫并加載數(shù)據(jù)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


#reading data from the csv file
data= pd.read_csv("/kaggle/input/novel-corona-virus-2019-dataset/2019_nCoV_data.csv")

理解數(shù)據(jù)集             

讓我們首先對數(shù)據(jù)集有一個(gè)基本的了解,并在必要時(shí)執(zhí)行數(shù)據(jù)清洗操作。

#checking the number of rows and columns
data.shape

輸出:(770,8)。數(shù)據(jù)集中有 8 列共 770 個(gè)觀測值。

#checking the top 5 rows
data.head()

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

列的名稱顯而易見。第一列「Sno」看起來像行號(hào),不向分析添加任何值。第五列「Last Update」顯示的值與「Date」列相同,但少數(shù)情況下,這些數(shù)字稍后會(huì)更新。在繼續(xù)之前,我們先刪除這兩列。

#dropping the 1st and 5th column
data.drop("Sno", axis=1, inplace=True)
data.drop("Last Update", axis=1, inplace=True)


#getting a summary of the columns
data.info()

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

除「Province/State」外,所有列都沒有空值。進(jìn)一步分析顯示,英國、法國和印度等國的省份名稱都不見了。在這種情況下,我們不能假設(shè)或填充任何主列表中缺少的值。讓我們轉(zhuǎn)到數(shù)字列。

data.describe()

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

describe() 方法返回?cái)?shù)據(jù)幀中數(shù)值列的一般統(tǒng)計(jì)信息。              

這個(gè)輸出可以得到的一個(gè)直接結(jié)論是,數(shù)據(jù)已經(jīng)累積報(bào)告,即任何一天報(bào)告的病例數(shù)包括先前報(bào)告的病例。死亡的最大值是 479,這與幾天前媒體的報(bào)道(在這一數(shù)據(jù)公布時(shí))是一致的。

#checking for duplicate rows
duplicate_rows=data.duplicated(['Country','Province/State','Date'])
data[duplicate_rows]

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

duplicated() 方法返回一個(gè)布爾序列,然后將其用作原始數(shù)據(jù)幀的掩碼。結(jié)果顯示沒有兩個(gè)記錄具有相同的國家、州和日期。因此我們可以得出結(jié)論,數(shù)據(jù)集中的所有觀測值都是唯一的。

#listing all the countries where the virus has spread to
country_list=list(data['Country'].unique())
print(country_list)
print(len(country_list))

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

數(shù)據(jù)顯示,該病毒已經(jīng)傳播到亞洲、歐洲和美洲的 32 個(gè)國家。為了進(jìn)行分析,我們可以合并「China」和「Mainland China」的數(shù)據(jù)。

#merging China and Mainland China
data.loc[data['Country']=='Mainland China','Country']='China'

在開始之前,讓我們檢查一下 [Date] 欄中的日期。

print(list(data['Date'].unique()))
print(len(list(data['Date'].unique())))

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

數(shù)據(jù)似乎每天都在不同的時(shí)間更新。我們可以從時(shí)間戳中提取日期并將其用于進(jìn)一步的分析。這將有助于我們保持日期一致。

#converting 'Date' column to datetime object
data['Date'] = pd.to_datetime(data['Date'])


#extracting dates from timestamps
data['Date_date']=data['Date'].apply(lambda x:x.date())

讓我們了解一下疫情對每個(gè)國家的影響。

#getting the total number of confirmed cases for each country


df_country=data.groupby(['Country']).max().reset_index(drop=None)
print(df_country[['Country','Confirmed','Deaths','Recovered']])

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

由于數(shù)據(jù)是累積的,所以我們需要使用 groupby() 和 max() 函數(shù),以獲得每個(gè)國家報(bào)告的最大數(shù)目。如果我們使用 sum(),則會(huì)導(dǎo)致重復(fù)計(jì)算。              

數(shù)據(jù)證實(shí),迄今為止,中國報(bào)告的病例最多,481 例死亡病例幾乎全部來自中國。但另一方面,中國也有 522 人康復(fù),其次是泰國,有 7 人康復(fù)。

#preparing data for a time-series analysis


df_by_date=data.groupby(['Date_date']).sum().reset_index(drop=None)


df_by_date['daily_cases']=df_by_date.Confirmed.diff()
df_by_date['daily_deaths']=df_by_date.Deaths.diff()
df_by_date['daily_recoveries']=df_by_date.Recovered.diff()
print(df_by_date)

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

我們已經(jīng)完成了數(shù)據(jù)預(yù)處理步驟,接下來讓我們繼續(xù)進(jìn)行數(shù)據(jù)可視化,以尋找新的趨勢和模式。              

數(shù)據(jù)可視化              

對于數(shù)據(jù)可視化,我們將使用兩個(gè)強(qiáng)大的 Python 庫:Matplotlib 和 Seaborn。Matplotlib 是大多數(shù)數(shù)據(jù)科學(xué)家使用的默認(rèn)二維可視化庫。Seaborn 建立在 matplotlib 之上,有助于構(gòu)建更好看、更復(fù)雜的可視化效果,如熱圖就是用這個(gè)庫繪制的。              

讓我們根據(jù)從數(shù)據(jù)的不同方面創(chuàng)建五個(gè)可視化圖。              

1.一段時(shí)間內(nèi)的確診病例數(shù)

#plotting a bar chart of confirmed cases over time


sns.axes_style("whitegrid")


sns.barplot(
x="Date_date",
y="Confirmed", 

data=data.groupby(['Date_date']).sum().reset_index(drop=None)
)


plt.xticks(rotation=60)
plt.ylabel('Number of confirmed cases',fontsize=15)
plt.xlabel('Dates',fontsize=15)

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

2.死亡率與康復(fù)率

#plotting two line plots for deaths and recoveries respectively


plt.plot('date_updated', 'Deaths', 

data=data.groupby(['date_updated']).sum().reset_index(drop=None), color='red')


plt.plot('date_updated', 'Recovered', 

data=data.groupby(['date_updated']).sum().reset_index(drop=None), color='green')


plt.xticks(rotation=60)
plt.ylabel('Number of cases',fontsize=15)
plt.xlabel('Dates',fontsize=15)
plt.legend()
plt.show()

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

3.除中國外,受影響最嚴(yán)重的 10 個(gè)國家

#We know that China is the most affected country by a large margin, 

#so lets create a bar plot to compare countries other than China


#increasing the figure size
plt.rcParams['figure.figsize']=(15,7)


sns.barplot(
x="Country",
y="Confirmed",
data=df_country[df_country.Country!='China'].nlargest(10,'Confirmed'),
palette=sns.cubehelix_palette(15, reverse=True)
)


plt.ylabel('Number of cases',fontsize=15)
plt.xlabel('Countries',fontsize=15)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

4.死亡率和時(shí)間的關(guān)系

#The mortality rate, at any point in time, can be roughly calculated 

#by dividing the number of deaths by the number of confirmed cases


df_by_date['mrate']=df_by_date.apply(lambda x: x['Deaths']*100/(x['Confirmed']), axis=1)


plt.plot('Date_date','mrate',data=df_by_date, color='red')
plt.show()

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

5.中國十大受災(zāi)最重的省份

#creating a separate dataframe for provinces


df_province=data[data['Country']=='China'].groupby(['Province/State']).max().reset_index(drop=None)


#selecting 10 most affected provinces
df_province=df_province.nlargest(10,'Confirmed')


df_province=df_province[['Province/State','Deaths','Recovered']]


#for multi-bar plots in seaborn, we need to melt the dataframe so 

#that the the deaths and recovered values are in the same column
df_province= df_province.melt(id_vars=['Province/State'])

sns.barplot(
x='Province/State',
y='value',
hue='variable',
data=df_province
)


plt.xlabel('Provinces',fontsize=15)
plt.ylabel('Number of cases',fontsize=15)

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

可視化結(jié)果分析              

  1. 自 1 月 28 日以來,每天報(bào)告的病例數(shù)量增加了近250%。2 月 4 日報(bào)告的病例數(shù)為 3915 例。這表明該病毒具有高度的傳染性,正在迅速傳播。              

  2. 在第一周,死亡率高于康復(fù)率。自 1 月 31 日以來,康復(fù)率迅速上升,并呈現(xiàn)出積極的趨勢。2 月 4 日有 255 人康復(fù),而死亡人數(shù)為 66 人。隨著越來越多的人了解癥狀并及時(shí)尋求藥物治療,康復(fù)率將繼續(xù)提高。              

  3. 與在地理上和中國位置相近的國家,如泰國、日本和新加坡,報(bào)告的病例比其他亞洲和歐洲國家多。德國是一個(gè)例外,其擁有的病例在歐洲最多。              

  4. 死亡率從未超過 3%,正在逐漸下降到 2%。未來幾周更多的康復(fù)病例可能會(huì)進(jìn)一步降低這一數(shù)字。

  5. 中國湖北省是此次疫情的中心,報(bào)告的病例明顯多于其他所有省份的總和。有些省份沒有死亡病例,所有受感染的病人都康復(fù)了。              

結(jié)論              

分析顯示,武漢冠狀病毒的傳播速度驚人。目前,至少 811 人在此次疫情中死亡,超過 7 年前非典爆發(fā)時(shí)報(bào)告的 774 人死亡人數(shù)。我祈禱并希望病毒能盡快得到控制。    

via:https://towardsdatascience.com/a-data-scientists-perspective-on-the-wuhan-coronavirus-4d1110446478

雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng) 

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

用 Python 對新冠病毒做數(shù)據(jù)分析,我們得出哪些結(jié)論?

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說