本文来自楼+学员 vincentbao 的毕业作品,他用数据分析的方法,为我们展示了一副新冠疫情下的世界全貌。
2020年初,一场新冠肺炎疫情肆虐全球,新冠肺炎被世界卫生组织命名为2019-nCoV。
新冠疫情的爆发席卷全世界各个国家,至今仍有许多国家确诊病例及死亡人数在不断的上升。作为世界发达国家之一的美国,在这场灾难面前表现尤为糟糕,成为确诊病例及死亡人数最多的国家。
许多观点认为,西方国家之所以应对疫情迟缓,是因为民众对于疫情风险的漠视,对于风险的评估和预期不到位。然而事实上,新冠疫情肆虐不仅对人身生命安全造成了威胁,也对经济造成了巨大的冲击,全球金融市场出现大动荡,美国股指甚至出现了前所未有的三次熔断,各国经济都遭受了不同程度的冲击。
此外,疫情对于主流舆论的影响也较为深远,抗击疫情成为了社会主流的舆论场。这场疫情给人类的生活和生产带来太多的教训和启示,也是一场难得的风险警示和教育课。
因此,我将从数据分析和挖掘的角度出发,展现疫情对于社会,舆论,经济等不同方面的影响,通过数据的展现更能警醒人们要重视疫情,疫情尚未结束,群防群控仍需继续进行。
本项目将对目前新冠疫情对社会造成的影响进行分析,主要从以下三部分进行:
一、对世界疫情现状进行可视化,来展现世界疫情目前的严峻性。
二、分析疫情对于新闻舆论的影响。
三、通过国内的经济数据来展现疫情对于经济社会的影响。
数据采集
首先是数据采集部分,首先要采集的是当前日期下的世界疫情情况,我们通过抓取丁香园疫情实时动态页面来获得各个国家的确诊人数、治愈人数和死亡人数并将其存入DataFrame里面。
html='https://3g.dxy.cn/newh5/view/pneumonia?scene=2&clicktime=1579582238&enterid=1579582238&from=timeline&isappinstalled=0'
html_data=requests.get(html)
html_data.encoding = 'utf-8'
html_data=etree.HTML(html_data.text,etree.HTMLParser())
html_data=html_data.xpath('//*[@id="getListByCountryTypeService2true"]/text()') #xpath方法选择疫情的数据集合
ncov_world=html_data[0][49:-12]
ncov_world=ncov_world.replace('true', 'True')
ncov_world=ncov_world.replace('false', 'False')
ncov_world=eval(ncov_world)
country=[]
confirmed=[]
lived=[]
dead=[]
for i in ncov_world: #分离国家名称,确诊人数,治愈人数和死亡人数并存入dataframe里备用
country.append(i['provinceName'])
confirmed.append(i['confirmedCount'])
lived.append(i['curedCount'])
dead.append(i['deadCount'])
data_world=pd.DataFrame()
data_world['国家名称']=country
data_world['确诊人数']=confirmed
data_world['治愈人数']=lived
data_world['死亡人数']=dead
data_world.head(5)
接下来采集国内的经济数据,经济变化情况通常通过GDP来体现,国家统计局提供了详细的数据可供查询,不仅可以查询GDP,还可以查询各个行业数据的累加值和增加值,同时还支持按月按季度和按年查询。由于GDP通常以季度来同步,所以此处采集了近18个季度以来的各行业经济数据情况来备用。
数据预处理
下面对几个数据集进行简单的处理。
经济行业数据和世界范围疫情数据采集时就已进行了相应的整理,保留了需要用到的部分并对标签都进行了修改,且没有空值,无需进行进一步处理。而历史疫情信息的时间仓库数据需要进行处理,只保留各个国家的总疫情数据情况,去掉分身数据,并建立时间序列索引和查询是否有空集,疫情新闻部分只保留新闻日期,新闻名称和新闻内容。
data_area=data_area.loc[data_area['countryName']==data_area['provinceName']]
data_area_times=data_area[['countryName','province_confirmedCount','province_curedCount','province_deadCount','updateTime']]
time=pd.DatetimeIndex(data_area_times['updateTime']) #根据疫情的更新时间来生成时间序列
data_area_times.index=time #生成索引
data_area_times=data_area_times.drop('updateTime',axis=1)
data_area_times.head(5)
data_area_times.isnull().any() #查询是否有空值
全球疫情可视化地图
下面给出了当前世界疫情确诊人数最多的十个国家来进行数据可视化。通过条形图可以清晰的看出这些国家的确诊人数,治愈人数和死亡人数。
data_world=data_world.sort_values(by='确诊人数',ascending=False) #按确诊人数进行排序
data_world_set=data_world[['确诊人数','治愈人数','死亡人数']]
data_world_set.index=data_world['国家名称']
data_world_set.head(10).plot(kind='bar',figsize=(15,10)) #对排序前十的国家数据进行绘图
plt.xlabel('国家名称',fontproperties=myfont)
plt.xticks(fontproperties=myfont)
plt.legend(fontsize=30,prop=myfont) #设置图例
不难看出,美国确诊人数仍然居于高位,累计已经超过500万人,巴西印度其次。
疫情期间,各大分析网站都给出了疫情的地图可视化,通过疫情的地图可视化可以更清楚的了解疫情在世界范围内的分布情况,通过点选地图可以获得各地疫情信息,使得信息可视化更加智能。通过 python 的 pyecharts 模块,我们也可以实现这一功能。
红色到蓝色的不同颜色代表了严重性的差异,通过鼠标点击可以获得各个国家疫情累计确诊人数,不难看出,疫情在全世界范围内蔓延并且大部分国家疫情确诊人数都非常高。
后续还有:
- 疫情增长情况
- 新冠疫情新闻分析
- 疫情对各行业的影响
- 总结
因篇幅有限,此处不完整展示实验报告。完整报告点击此处。
实验楼已将该实验报告整理为了一门新的课程,可免费学习,快点击《新冠疫情数据可视化分析》,亲自来做一份实验报告吧。