【大数据分析】基于美国新冠肺炎疫情的数据分析
1、 需求分析
对美国2021年新冠新冠肺炎确诊病例进行数据分析,以Python为编程语言,使用Spark对数据进行分析,描述分析结果,并且用python对分析结果进行可视化。主要有以下两个方面的分析:时间趋势分析:分析每日/每周/每月的新增确诊病例数、治愈率和死亡率的变化趋势,以及与时间相关的其他指标。地理分布分析:分析不同州/城市的确诊病例数、死亡数、治愈数等,探究地域差异与人口密度等因素的关系。为疫情防控提供经验和参考。
2、 总体设计
2.1总体分析
搭建ubuntu环境,使用python编程语言对数据进行处理;连接sql数据库,将数据保存至数据库,以HDFS为平台,上传以及下载数据结果文件;安装pyecharts库,在spark中运行python代码。
本次期末大作业使用的数据集来自数据网站Kaggle的美国新冠肺炎疫情数据集,该数据集以数据表us-counties.csv组织,其中包含了美国发现首例新冠肺炎确诊病例至2020-05-19的相关数据。数据包含以下字段:
字段名称 字段含义 例子
date 日期 2020/1/21;2020/1/22;etc
county 区县(州的下一级单位) Snohomish;
state 州 Washington
cases 截止该日期该区县的累计确诊人数 1,2,3…
deaths 截止该日期该区县的累计确诊人数 1,2,3…
2.2实现流程图
2.3遇到的问题以及解决方法
将数据存储到数据库时没有连接数据库的函数,导致在mysql中查看表格时没有数据,在数据存储前先执行连接数据库的语句错误得到解决;在启动spark时出现端口满的情况,导致无法运行py文件,通过查询百度得知,查看端口号后删除无用的端口后即可顺利运行。
3、详细设计
3.1编写的类清单
def toDate(inputStr) | 设置日期格式 |
pd.read_csv | 读取csv文件 |
spark.sparkContext.textFile() | Spark读取数据 |
df.withColumnRenamed | 列重命名 |
df1.createOrReplaceTempView() | 注册为临时表 |
df.write.jdbc() | 连接数据库 |
df7 = spark.sql() | Sql语言读取并分析数据 |
3.2具体设计
(1)原始数据集是以.csv文件组织的,为了方便spark读取生成RDD或者DataFrame,首先将csv转换为.txt格式文件。转换操作使用python实现。
(2) 将文件上传至HDFS文件系统中,路径为:“/user/hadoop/us-counties.txt”
(3) 采用编程方式读取us-counties.txt生成DataFrame。
(4) 使用Spark对数据进行分析。主要统计以下指标,所有结果保存为.json文件,创建mysql数据库。
图3-7 创建数据库
图3-8 创建表格并查看
1统计美国各州的累计确诊人数和死亡人数和病死率,并将 结果保存到Mysql数据库中。
图3-9 读取数据并写入mysql数据库
图3-10 美国各州累计确诊、死亡人数和病死率绘制表格代码
2统计美国确诊人数最多的十个州。
图3-11 统计美国确诊人数最多的十个州
图3-12 美国确诊最多的10个州绘制词云图代码
3统计美国死亡人数最多的十个州。
图3-13 统计美国死亡人数最多的十个州
图3-14美国死亡最多的10个州绘制柱状图
4统计美国确诊人数最少的十个州。
图3-15 统计美国确诊人数最少的十个州
图3-16 美国确诊最少的10个州绘制漏斗图
(5)将Spark计算结果.json文件下载到本地文件夹。建议可对结果进行数据可视化。
图3-17 将Spark计算结果.json文件下载到本地文件夹
4、程序运行结果测试与分析
通过./bin/hdfs dfs -ls /user/hadoop
查看HDFS结果目录
图4-1 查看HDFS目录
通过$./bin/hdfs dfs -get /user/hadoop/success1.json/*.json /home/hadoop/result/result1
将Spark计算结果.json文件下载到本地文件夹
图4-2 将Spark计算结果.json文件下载到本地文件夹
4.1 美国各州累计确诊、死亡人数和病死率—>表格
图4-3 查看mysql数据库
图4-4 表格结果展示
分析:通过表格清晰明了地展示了美国各州累计确诊、死亡人数和病死率的总体情况,对美国各州疫情有了基本的了解,为后续数据分析做好铺垫。
4.2 美国确诊最多的10个州——>词云图
图4-5 词云图展示
分析:通过词云图可以得到美国确诊人数第一的州是New York,词云图通过大小和颜色,在一定程度上突出展示了数据集大的特征,有利于数据分析。
4.3 美国死亡最多的10个州——>柱状图
图4-6 柱状图展示
分析:通过柱状图可以得到美国各州死亡人数的一个递增变化,纽约州的死亡人数最多,达到了接近100万人,其余州的死亡人数相对较少。柱状图能够使我们更好地了解疫情对不同州的影响程度,有助于政策制定者和公众做出相应的决策和行动。在此基础上,可以针对不同州的疫情情况采取有针对性的措施,以有效遏制病毒的传播并保障公众的健康安全。
4.4 美国确诊最少的10个州—漏斗图
图4-7 漏斗图展示
分析:通过分析该漏斗图可以得到,美国确诊最少的10个州人数的分布情况,排前三的分别是Maine,West Virginia,Guam,与其他图表相比,漏斗图展示的数据更具有视觉冲击力,更让人眼前一亮。
5、结论与心得
本次期末大作业对美国2021年新冠肺炎确诊病例进行了数据分析,以python为编程语言,ubuntu虚拟机为载体,使用pyechart库对数据结果进行数据可视化分析。在本次大作业完成的过程中,在老师的指导下,我根据一学期以来的课程学习基础,熟练掌握了ubuntu虚拟机的使用方法,并成功下载并配置了hadoop,spark,sql数据库以及HDFS等程序,与此同时我还掌握并熟练运用它们的shell命令。
在本次期末大作业设计中,我不仅对美国2021年新冠肺炎的基本情况有了一定的了解,不难发现疫情对美国不同州的影响程度存在很大差异,一些州的死亡率和感染率明显高于其他州。这与各州的人口密度、经济水平、医疗资源等因素有关。还学会了通过pyecharts库对数据结果json文件进行画图,我学习了许多数据可视化的函数,例如,表格的绘制,词云图属性的设置,多列柱状图的绘制等等。此外,我对ubuntu虚拟机的使用更加的游刃有余,我掌握了HDFS上传和下载文件的方法,以及读取数据集生成DataFrame的方法。本次期末大作业的完成丰富了我的python语言编程以及ubuntu虚拟机使用的知识储备。
在本次大作业完成的过程中,我也遇到了一些小问题,比如,将数据存储到数据库时没有连接数据库的函数,导致在mysql中查看表格时没有数据,在数据存储前先执行连接数据库的语句错误得到解决;在启动spark时出现端口满的情况,导致无法运行py文件,通过查询百度得知,查看端口号后删除无用的端口后即可顺利运行。
本次期末大作业的顺利完成离不开老师一学期以来的耐心指导,通过本次期末大作业,我深知自己还有许多需要改进的地方,对知识的学习不够主动严谨,总是在出现问题后才去补救,没有提前学习的好习惯;对数据可视化分析想法过于单一,将知识运用到实际的能力不强。学无止境,在未来的学习中,我将继续完善自身的不足,不断改进自身存在的问题,继续保持良好的学习和探究热情,不断充实自我,学习更多的大数据分析技术。
参考文献