怎么使用Python对疫情数据进行可视化分析
小编写这篇文章的主要目的就是,站在当下的一个角度,对全球疫情情况进行一个数据分析,,包括确诊、治愈、死亡、时间、国家、地区等这些数据,针对这些数据,进行相关的一些可视化数据分析,下面小编就给大家做出一个详细的解答。
本项目主要通过python的matplotlib pandas pyecharts等库对疫情数据进行可视化分析。
本数据集来源于kaggle竞赛的开源数据集,数据集地址
本数据集主要涉及到全球疫情统计,包括确诊、治愈、死亡、时间、国家、地区等信息
功能函数
读取文件
df=pd.read_csv(r 39;C:\Users\Hasee\Desktop/covid_19_data.csv 39;) df.head()
更换列名,便于查看
cols=[ 39;序号 39;, 39;日期 39;, 39;省/州 39;, 39;国家 39;, 39;最近更新 39;, 39;确诊 39;, 39;死亡 39;, 39;治愈 39;] df.columns=cols df.日期=pd.to_datetime(df.日期) df
##利用groupby按照日期统计确诊死亡治愈病例的总和
#合并同一天同国家日期 global_confirm=df.groupby( 39;日期 39;)[[ 39;确诊 39;, 39;死亡 39;, 39;治愈 39;]].sum() global_confirm
全球疫情趋势
ax=global_confirm.plot(figsize=(12,10),title= 39;全球疫情趋势图 39;)
筛选出中国的数据
利用groupby按照日期统计确诊死亡治愈病例的总和
global_china=df[df[ 39;国家 39;]== 39;Mainland China 39;].reset_index() global_china_confirm=global_china.groupby( 39;日期 39;)[[ 39;确诊 39;, 39;死亡 39;, 39;治愈 39;]].sum().reset_index()
然后对其进行画图处理,把图绘制成三条线
利用groupby按照省统计确诊死亡治愈病例的总和
global_china=df[df[ 39;国家 39;]== 39;Mainland China 39;].reset_index() global_china_province_confirm=global_china.groupby( 39;省/州 39;)[[ 39;确诊 39;, 39;死亡 39;, 39;治愈 39;]].sum().reset_index() recovercent=100.*global_china_province_confirm[ 39;治愈 39;]/global_china_province_confirm[ 39;治愈 39;].sum() labels=[ 39;{0}-{1:1.2f}%-{2} 39;.format(i,j,k)for i,j,k in zip(list(global_china_province_confirm[ 39;省/州 39;]),recovercent,list(global_china_province_confirm[ 39;治愈 39;]))] plt.figure(figsize=(10,10)) plt.pie(global_china_province_confirm[ 39;治愈 39;],radius=0.3)
确诊人数排名前15的国家
plt.figure(figsize=(16,16)) plt.barh(list(global_country_confirm_rank.国家)[::-1], list(global_country_confirm_rank.确诊)[::-1]) plt.title( 39;确诊人数排名前15的国家 39;) plt.xlabel( 39;人数(千万) 39;) plt.ylabel( 39;国家 39;)
这里用pyecharts库画图,绘制的玫瑰图,rosetype
set_global_opts是设置格式:
中国确诊人数前十的省
china_confirm=df[df[ 39;国家 39;]== Mainland China ] china_latest=china_confirm[china_confirm[ 39;日期 39;]==max(china_confirm[ 39;日期 39;])] words=WordCloud() words.add( 39;确诊人数 39;,[tuple(dic)for dic in zip(list(china_latest[ 39;省/州 39;]),list(china_latest[ 39;确诊 39;]))],word_size_range=[20,100])
china_death=df[df[ 39;国家 39;]== Mainland China ] china_death_latest=china_death[china_death[ 39;日期 39;]==max(china_death[ 39;日期 39;])] china_death_latest=china_death_latest.groupby( 39;省/州 39;)[[ 39;确诊 39;, 39;死亡 39;]].max().reset_index() geo=Map() geo.add( 中国死亡病例分布 ,[list(z)for z in zip(china_death_prodic,list(china_death_latest[ 39;死亡 39;]))], china ) geo.set_global_opts(title_opts=opts.TitleOpts(title= 全国各省死亡病例数据分布 ),visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=[ { min :1500, label : 39; gt;10000人 39;, color : #6F171F }, { min :500, max :15000, label : 39;500-1000人 39;, color : #C92C34 }, { min :100, max :499, label : 39;100-499人 39;, color : #E35B52 }, { min :10, max :99, label : 39;10-99人 39;, color : #F39E86 }, { min :1, max :9, label : 39;1-9人 39;, color : #FDEBD0 }])) geo.render_notebook()
热力图
geo=Geo() geo.add_schema(maptype= china ) geo.add( 中国死亡病例分布 ,[list(dic)for dic in zip(china_death_prodic,list(china_death_latest[ 39;死亡 39;]))],type_=GeoType.EFFECT_SCATTER) geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title= 全国各省死亡病例数据分布 )) geo.render_notebook()
全球死亡人数地理分布情况
map=Map() map.set_global_opts(title_opts=opts.TitleOpts(title= 全球死亡人数地理分布情况 ),visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=[ { min :100001, label : 39; gt;100001人 39;, color : #6F171F }, { min :10001, max :100000, label : 39;10001-100000人 39;, color : #C92C34 }, { min :1001, max :10000, label : 39;1001-10000人 39;, color : #E35B52 }, { min :101, max :10000, label : 39;101-10000人 39;, color : #F39E86 }, { min :1, max :100, label : 39;1-100人 39;, color : #FDEBD0 }])) map.add( 全球死亡人数地理分布情况 ,[list(z)for z in zip(global_death_n,list(global_death[ 39;死亡 39;]))], world ) map.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) map.render_notebook()
全球疫情频率直方图
global_confirm.plot.hist(alpha=0.5) plt.xlabel( 39;人数(千万) 39;) plt.ylabel( 39;出现频率 39;) plt.title( 39;全球疫情频率直方图 39;)
其他图
陕西确诊病例饼图
陕西省确诊病例数据分布
中国治愈病例玫瑰图
到此为止,小编这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。