新冠疫情数据采集,分析及其可视化



前言

面对新冠病毒株可能发生的变异以及传染的不确定性,只有提前防控,精准防控,才能尽可能避免不稳定因素对整个社会甚至整个世界造成的损害采用大数据技术,包括数据的收集、存储、分析、呈现等方面。利用爬虫技术收集数据,同时使用MYSQL做出数据的存储与分析,最终利用pyecharts模块对收集的数据结果进行可视化,生成一个动态分布图,实现呈现各区域的疫情分布的状况。
处理和存储有关此类信息的算法,向人们提供疫情分布的状况和人员的接触程度信息,有助于排查感染人群、迅速切断疫情的传播,减少大量的检测和排查所需的各种资源的使用。提高防疫的工作效率。


一、数据采集与清洗

利用爬虫技术获取数据,用python进行数据处理,连接mysql数据库,最终完成可视化及其分析。
(此处只展示使用python连接mysql数据库的代码)


首先下载mysql并配置到环境两种方法进行数据库的连接分别是 PyMySQL 和 mysql.connector,我们学习 PyMySQL。
操作步骤:
1.连接数据库 conn = pymysql.connect()
2.生成游标对象 curosr = conn.cursor()
3.执行SQL语句 cursor.execute(sql)
4.关闭游标 cursor.close()
5.关闭连接 conn.closr()
6.引入navicat进行数据存储(也可以不用)
实现代码(部分)
db = pymysql.connect(host='localhost',
                     user='root',
                     password='123456',
                     database='wb_in')
cursor = db.cursor()  # 获取一个游标
#处理表一国内疫情
sql = "select* from china_in"
cursor.execute(sql)
result = cursor.fetchall()  # result为元组
# 将元组数据存进列表中,'省份','累计确诊','死亡','治愈','现有确诊','累计确诊增量','死亡增量','治愈增量','现有确诊增量'
province= []#省份
confirmed=[]#累计确诊
died = []#死亡
crued = []#治愈
curConfirm = []#现有确诊
confirmedRelative = []#累计确诊数量
for i in result:
    province.append(i[0])
    confirmed.append(i[1])
    died.append(i[2])
    crued.append(i[3])
print(i)

图片示例

![在这里插入图片描述](https://img-blog.csdnimg.cn/88d264ae27e64a9fb9f8b675ca3ffd48.png#pic_center)

二、数据可视化

1.历史新增确诊与累计确诊条形图

代码如下(示例):

#中国整体最新10天的死亡与治愈的一种对比
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
c = (
    Bar({"theme": ThemeType.MACARONS})
    .add_xaxis(china_data[40:])
    .add_yaxis("新增确诊", china_confirmed)
    .add_yaxis("累计确诊", china_t)
    .reversal_axis()
    .set_global_opts(
        title_opts={"text": "新增确诊与累计确诊条形图", "subtext": "讲述近20日的一个疫情概况"}
    )
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))
)
c.render_notebook()

在这里插入图片描述

2.6月25日个省份疫情情况

代码如下(示例):

line=(
    Line(init_opts=opts.InitOpts(width="1000px",height="600px"))
    .add_xaxis(xaxis_data=today_procince)
    .add_yaxis(series_name="新增确诊人数",y_axis=today_new, is_smooth=False)
    .add_yaxis(series_name="治愈人数",y_axis=today_heal,is_smooth=False)
    .set_global_opts(title_opts=opts.TitleOpts(title="6月25日个省份疫情情况"))
)
line.render_notebook()

在这里插入图片描述

3.中国地图疫情情况

c=Map(opts.InitOpts(width='1000px',height='800px'))
gen=[list(z) for z in zip(province,confirmed)]
gen2=[list(z) for z in zip(province,crued)]
gen3=[list(z) for z in zip(province,died)]
gen4=[list(z) for z in zip(province,curConfirm)]
#颜色配置
pieces=[
    {'max':1,'color':'#FFFFF0'},
    {'min':1,'max':9,'color':'#FFE0E0'},
    {'min':10,'max':99,'color':'#FEC0C0'},
    {'min':100,'max':499,'color':'#FD9090'},
    {'min':500,'max':999,'color':'#FC6060'},
    {'min':1000,'max':9999,'color':'#FB3030'},
    {'min':10000,'color':'#DD0000'},
]
c.add('全国累计确诊',gen,'china')
c.add('全国累计治愈',gen2,'china',is_selected=False)
c.add('全国累计死亡',gen3,'china',is_selected=False)
c.add('全国现有确诊',gen4,'china',is_selected=False)
c.set_global_opts(title_opts=opts.TitleOpts(title='中国数据详情图'),               visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=pieces))
c.render_notebook()

在这里插入图片描述

4.北京市份疫情情况

cursor.execute( "SELECT * from 当日数据");
result = cursor.fetchall()
df= pd.DataFrame(result)
df.columns=['时间','省份','城市','新增确诊','确诊人数','治愈人数','死亡人数']
data = df.loc[(df['省份']=='北京')]
data = data.loc[(data['城市']!='北京') ]
def Getcity(temp):
    tempdata = temp['城市']
    if(tempdata.startswith('朝阳')):
        return (tempdata+'区')
    else:
        return tempdata+'区'
data['城市'] = data.apply(lambda x: Getcity(x), axis=1)
c = (
    Map()
    .add("确诊数量", [list(z) for z in zip(data['城市'].tolist(), data['确诊人数'].tolist())], "北京")
    .add("治愈数量", [list(z) for z in zip(data['城市'].tolist(), data['治愈人数'].tolist())], "北京")
    .set_global_opts(
        title_opts=opts.TitleOpts(title="北京市"), visualmap_opts=opts.VisualMapOpts(max_=1000)
    )
    
)
c.render_notebook()

在这里插入图片描述


各个图分析及总结

图1:新增确诊与累计确诊条形图
中国整体最新10天的死亡与治愈的一种对比,可以看出新增确诊数目和累积数目都在提升,从而可以初步猜测是由于前几个月中国又出现了一次片地开花的情况,所以最近十天中国整体是呈现一个上升的模式,但是上升幅度不是很大,因为从后面的分析可以得出部分原因。
图2:6.25日单日新增
6月25日时候各省份的一个状态,大多数省份已经没有了明确的增长,除了台湾,上海等部分趋于中国其他省份基本回复正常。
图3:中国疫情情况地图
可以更加明确的看出,自疫情发展以来全国累计确诊,累计治愈,累计死亡,以及全国现有确诊的一个详细的情况。
图4治愈增量和死亡增量对比图
从这个图可以看出一个现在中国省死亡增量和一个治愈增量,这个一部分原因是因为广东,北京,上海人口密度高,感染率高,还有一部分我猜测是因为这些地方医疗能力比较强也可能是这其中的一部分原因
图4:北京疫情情况地图
近几个月国家整体都比较稳定,上海因为封闭管理持续减少,这幅图看到的是北京现有确诊,近两个月的北京因为防控到位没有明显的增加或者减少,因此他的确诊数目也都集中在人群比较多的地方,其余市区人口相对都比较稀少。

总结:
总的来说,通过分析可以发现,我国的疫情已经出现了后疫情的趋势,新增人数与新增确诊都逐渐减少,相比来说,中国的疫情已经基本得到了控制,治愈增量逐步提升,死亡增量逐步减少,关于疫情我国的治疗水平均逐渐提升。从图1图2都可以看出,我国的疫情以及到达一个非常稳定的时代。近几个月国家整体都比较稳定,上海因为封闭管理持续减少,这幅图看到的是北京现有确诊,近两个月的北京因为防控到位没有明显的增加或者减少,因此他的确诊数目也都集中在人群比较多的地方,其余市区人口相对都比较稀少。

ps:文章所涉及数据需要的可下载
链接:https://pan.baidu.com/s/1gQtzTkzlVIshOziQTScaOg
提取码:1234

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐