Advertisement

新冠肺炎疫情分析(panda、matplotlib.pyplot)

阅读量:

主要目标是针对2020年新冠肺炎疫情快速发展的阶段进行深入分析,并全面了解其发展变化的特征。首先需要了解的是数据集

复制代码
 import pandas as pd

    
 import matplotlib.pyplot as plt
    
 plt.rcParams['figure.figsize']=(10.0,6.0)
    
 plt.rcParams['font.family']=['sans-serif']
    
 plt.rcParams['font.sans-serif']=['SimHei']
    
  
    
 df=pd.read_csv('https://www.gairuo.com/file/data/dataset/countries-aggregated.csv',parse_dates=['Date'])
    
 df.tail()
    
  
    
 '''
    
   12.            Date	     Country	     Confirmed	Recovered	Deaths
    
 19339	2020-05-04	West Bank and Gaza	362	       102	      2
    
 19340	2020-05-04	Western Sahara	     6	        5	      0
    
 19341	2020-05-04	Yemen	             12	        1	      2
    
 19342	2020-05-04	Zambia	             137	    78	      3
    
 19343	2020-05-04	Zimbabwe	         34	        5	      4
    
   19. '''
    
    
    
    
    AI写代码

首先来看一下中国累计确诊人数趋势,可见爆发之初是快速上升的,如下:

复制代码
 (

    
  
    
     df.assign(Date=lambda x:x.Date.dt.strftime('%Y-%m-%d'))
    
     .loc[df.Country=='China']  #只选中国的
    
     .set_index('Date')           #日期为索引
    
     .Confirmed                   #看确诊的
    
     .plot()                      #画图
    
 )
    
    
    
    
    AI写代码

再看中国新增确诊趋势,在2020年初2月初有一个确诊增加高峰,如下:

复制代码
 (

    
     df.assign(Date=lambda x:x.Date.dt.strftime('%Y-%m-%d'))
    
     .loc[df.Country=='China']
    
     .set_index('Date')
    
     .assign(new=lambda x:x.Confirmed.diff())
    
     .new
    
     .plot()
    
 )
    
    
    
    
    AI写代码

找出确诊病例在1万以上的国家中死亡率排名前十的国家,如下:

复制代码
 (

    
     df.loc[df.Date==df.Date.max()]        #由于是累计数据,所以需要看最新的
    
     .loc[df.Confirmed>10000]              #确认10000人以上
    
     .assign(rate=df.Deaths/df.Confirmed)  #增加死亡率
    
     .sort_values('rate',ascending=False)  #按死亡率最高排序
    
     .set_index('Country')                 #国家为索引
    
     .rate                                 #选取死亡率
    
     .head(10)                             #取前10个
    
     .sort_values(ascending=True)          #为了图形的直观性,按降序排列
    
     .plot
    
     .barh()                               #横向柱状图
    
 )
    
    
    
    
    AI写代码

中美两国新冠肺炎确诊病例数量趋势如下:

复制代码
 (

    
     df.assign(Date=lambda x:x.Date.dt.strftime('%Y-%m-%d'))
    
     .loc[(df.Country.isin(['China','US'])),['Date','Country','Confirmed']]#选出需要的数据
    
     .groupby(['Country','Date'])   #按国家进行分组
    
     .max()             #聚合
    
     .unstack()   #解堆
    
     .T      #转置
    
     .droplevel(0)  #删除一级索引
    
     .plot()  #绘图
    
 )
    
    
    
    
    AI写代码

中美两国新冠肺炎病例的死亡率对比,如下:

复制代码
 (

    
     df.loc[(df.Country.isin(['China','US'])&(df.Date==df.Date.max()))]  #只要这两个国家的最新数据
    
     .assign(rate=df.Deaths/df.Confirmed)  #增加死亡率
    
     .set_index('Country')  #将国家设置为索引
    
     .rate  #选取死亡率
    
     .plot 
    
     .bar()  #绘图
    
     
    
 )
    
    
    
    
    AI写代码

中美两国新冠肺炎病例每日死亡率变化对比,如下:

复制代码
 (

    
     df.assign(Date=lambda x:x.Date.dt.strftime('%Y-%m-%d'))
    
     .loc[(df.Country.isin(['China','US']))] #只要这两个国家的数据
    
     .assign(rate=df.Deaths/df.Confirmed) #增加死亡率
    
     .groupby(['Country','Date'])  #分组
    
     .max()  #聚合
    
     .rate   #选取死亡率
    
     .unstack() #解堆
    
     .T  #转置
    
     .plot() #绘图
    
 )
    
    
    
    
    AI写代码

全部评论 (0)

还没有任何评论哟~