基于地震数据的Spark数据处理与分析

本案例针对全球重大地震数据进行分析,采用Python为编程语言,采用Hadoop存储数据,采用Spark对数据进行处理分析,并对结果进行数据可视化。

此外,还需要安装plotly用于绘制地图,安装wordcloud用于绘制词云图。

本博客中的Python代码均运行在JupyterNotebook上。

在用户目录下创建一个NoteBook文件夹,将earthquake.csv文件放入NoteBook中,接着打开JupyterNotebook。

在代码框中输入代码,运行后可以直接显示结果。首先从文件中读取数据:

Pandas提供了to_datetime()方法,可以将不同的日期格式转换为datetime类型。设置errors='coerce'参数,遇到不能转换的格式时将其置为NaN。

rawData.loc[3378,'StructedDate']='1975-02-23'rawData.loc[7512,'StructedDate']='1985-04-28'rawData.loc[20650,'StructedDate']='2011-03-13'delrawData['Date']接着按照同样地步骤对Time数据进行清洗。

经过测试,这个API对于中国境外的坐标不能准确地返回结果,因此只获取在中国境内的坐标信息。坐标在中国境外时,就返回一个空值。如果坐标在海上,就获取海域的名称(如南海);如果在陆地上,就获取省份的名称。

编写程序为每个坐标获取地名信息,并将其存到Area列中。这个过程大概需要花费10分钟。

查看Type数据中是否存在异常值。

至此,数据清洗工作完成,将数据保存到earthquake_cleaned.csv文件中。使用utf-8编码防止Spark读取时出现中文乱码,设置index=False防止将第一列索引保存至文件中。

rawData.to_csv("earthquake_cleaned.csv",encoding='utf-8',index=False)上传到HDFS以便Spark进行数据分析。

首先要对Date属性进行拆分,分别得到年月日的信息。

将Date属性拆分后发现年月日信息都是字符串类型,将其改为整型。

forxinattrsName:df=df.withColumn(x,df[x].cast('int'))接下来对数据分别按年月日计数并将结果保存到文件中,方便之后进行可视化。由于使用Spark自带的函数将DataFrame保存为csv文件时,文件会保存为文件夹,在本地读取时比较麻烦。因此使用toPandas()方法将Spark的DataFrame转换成pandas的DataFrame,再保存为csv文件,方便可视化时读取。

countByYear=df.groupBy("Year").count().orderBy("Year")countByYear.toPandas().to_csv("countByYear.csv",encoding='utf-8',index=False)countByMonth=df.groupBy("Month").count().orderBy("Month")countByMonth.toPandas().to_csv("countByMonth.csv",encoding='utf-8',index=False)countByDay=df.groupBy("Day").count().orderBy("Day")countByDay.toPandas().to_csv("countByDay.csv",encoding='utf-8',index=False)2.中国境内每个省份(海域)发生重大地震的次数首先筛选出中国境内发生的重大地震信息,保存到文件中。

earthquakeC=df.filter("Areaisnotnull")earthquakeC.toPandas().to_csv("earthquakeC.csv",encoding='utf-8',index=False)按Area属性对数据进行分组计数,要注意只统计Area非空的数据。

countByArea=earthquakeC.groupBy("Area").count()countByArea.toPandas().to_csv("countByArea.csv",encoding='utf-8',index=False)3.不同类型地震的数量分别计算出中国境内和世界范围内的不同地震类型的数量。

mostPow=df.sort(df["Magnitude"].desc(),df["Year"].desc()).take(500)mostPowDF=spark.createDataFrame(mostPow)mostPowDF.toPandas().to_csv("mostPow.csv",encoding='utf-8',index=False)5.震源深度前500的地震当震源深度相同时,将震级更高的地震排在前面。

mostDeep=df.sort(df["Depth"].desc(),df["Magnitude"].desc()).take(500)mostDeepDF=spark.createDataFrame(mostDeep)mostDeepDF.toPandas().to_csv("mostDeep.csv",encoding='utf-8',index=False)6.震级与震源深度的关系将数据中的Depth和Magnitude拿出来,保存到文件中。

df.select(df["Magnitude"],df["Depth"]).toPandas().to_csv("powDeep.csv",encoding='utf-8',index=False)至此数据分析基本完成,将df也保存到csv文件中,用于数据可视化。

df.toPandas().to_csv("earthquake1.csv",encoding='utf-8',index=False)四、数据可视化可视化工具使用plotly,可以绘制可交互的图表,支持保存为html格式的文件方便查看,并可以完美兼容JupyterNotebook。另外,用WordCloud绘制词云。

首先将所有数据绘制到地图上。根据我们的常识,地震震级越高,地震的破坏力呈几何级数上升。为了画出更直观的图,使用exp(Magnitude)/100作为每个坐标的大小。画出的图都保存为html格式,方便查看。

根据数据分析结果画出柱状图。

前十多年的地震次数明显少于之后的,可能是早期地震监测技术比较落后的原因。

THE END
1.有哪几种类型以上四种类型的分类方法不仅适用于性格分类,还可以应用于其他领域。比如在项目管理中,可以将项目按照四种类型进行分类,分别代表不同的项目特点和需求。这种分类方法有助于我们更好地理解和应对不同类型的项目挑战。总之,将事物分为四种类型是一种简单而有效的分类方法。通过了解和应用这四种类型,我们可以https://zhidao.baidu.com/question/508029094909875764.html
2.怎么去分辨不同类型1. 确定分类标准:首先,我们需要确定一个合适的分类标准,以便将不同类型进行分类。分类标准可以是任何与所要分辨的对象相关的属性或特征。 2. 收集信息:接下来,我们需要收集关于不同类型的信息。这可以通过阅读相关文献、研究报告、采访专家或进行实地调查等方式来获取。 https://baike.120ask.com/art/a1602
3.不同类型英文怎么写不同类型英语怎么说沪江词库精选不同类型英文怎么写、英语单词怎么写、例句等信息 【计】 distinguished type 翻译推荐 使不同diversify 不同different 不同的another 与…不同different 意见不同的dissident 不同时的asynchrono 不同反应differenti 不同程度varying 想法不同的otherwise https://www.hujiang.com/ciku/764255_-1097723018/
4.关于类型意义本身没有好坏之分,只是喜好不同。 当建筑师集体不自信的时代,寻找意义便成了首要目标。这个意义看起来是重要的,沉重的,久远的,深刻的。但其实意义本身是没有这么多形容词的。正如类型,概念,只要有其所指,意义的好坏便加注在那个概念上。任何事物都有意义,都是人赋予的意义,也就是说,意义的发生也就是丰富https://www.douban.com/note/799081627/
5.各种类型英文英语各种类型用英语怎么说翻译读音爱该疾病有各种类型。 来自柯林斯例句 2. This store stocks all types of toys. 这家商店储备各种类型的玩具. 来自《简明英汉词典》 3. She sets up a rigorous intellectual framework to deconstruct various categories of film. 她构建了一个缜密的智识框架来解构各种类型的电影。 来自柯林斯例句 4. About https://www.iciba.com/%E5%90%84%E7%A7%8D%E7%B1%BB%E5%9E%8B/
6.不同的种类的翻译是:Thedifferenttypesof中文翻译英文意思a哈哈!我在看你 Ha ha! I am looking at you[translate] aà mon coeur seulement puis vous xin pourpre 在我的心脏然后只有您辛绯红色[translate] a8 月 In August[translate] a不同的种类 Different type[translate]http://eyu.zaixian-fanyi.com/fan_yi_9427326
7.交互设计笔记之:小分类,大学问2.把无规律的事物分为有规律的。按照不同的特点分类事物,使事物更有规律! 3.推测事物间存在的一些自然关系 其实中心意思也是在讲首先区分,其次归类。在产品设计中,分类管理这种东西总是会层出不穷的跑出来让人做抉择,他们跟导航设计似乎又有着千丝万缕的干系,好的分类设计关乎用户的感觉,检查并重视产品中的分类http://chengdu.cdxwcx.cn/article/cheesi.html
8.网络Cos和ToS和DSCPQosPHB的含义和区别以及映射反过来说,一种非工作保存的队列是可以进行流量整形的,而工作保存的队列(参考 PRIO)不能进行流量整形,因为工作保存队列无法延迟发送数据包。 2. 调度 一个调度器会对将要发送的数据包顺序进行排列或重排。 3分类 分类器能把不同类型的网络流量划分到不同的队列中去。 https://blog.csdn.net/bandaoyu/article/details/115666599
9.新手看过来(35)为何会有不同的雨刷类型没错,对于新手而言,了解雨刷不仅仅是要从选购和更换问题着手,同时你也可以了解一下关于雨刷的冷知识——为何会有不同类型的雨刷方式?不过要注意的是,本文所说的雨刷类型,并非指有骨和无骨这两类,而是要说平行式雨刷和对开式雨刷两种。 两种雨刷类型的比较https://www.pcauto.com.cn/drivers/1140/11405659.html
10.劳动合同种类聘用合同有什么不同?8、管理监督部门不同。 按照各部门的职能分工,劳动合同由人力资源和社会保障部门管理,事业单位除人力资源和社会保障部门管理外,还有分不同类型,则由不同的部门管理,学校归教育部门管理,医院归卫生健康部门管理,等等。 二、聘用合同的特征是什么? 聘用合同具有一般合同的法律特征聘用合同作为一种合同形式,具有一般合同共https://www.64365.com/zs/1476518.aspx
11.A类B类到底什意思?冷藏车温度分类解析凯普特K6冷藏车对于制冷要求更高的E、F等类别冷藏车,其运输的货物对低温更为敏感,需要在车厢内创造出适宜的温度才行,那么该类型冷藏车对冷机功率、保温厢材质以及风道要求就会越高。 这些不同类型的冷藏车,其实我们在路上更为常见的主要还是C-F类冷藏车。从使用场景来看,C类冷藏车的温度覆盖面最广,所运输的产品种类相对来说http://www.360che.com/driver/221019/175946.html
12.售后公房商品房农民动迁……社区类型大不同,精细化管理如何因目前市一级已经识别区分了售后公房社区、商品房社区、混合型社区、涉外社区、农村宅基归并社区、农民集中安置社区以及大型居住社区等7类,正在着手依据不同类型社区的特点和条件,积极推动社区分类管理。社区分类管理总的目标是创造美好生活的社区条件,要以“治标”和“治本”相结合的方法,推动多元主体的共商、共议、共https://www.jfdaily.com/news/detail?id=119360