地震数据分析

一、数据分析项目介绍

地震(英文名称:earthquake)又称地动、地振动,是地壳快速释放能量过程中造成的振动,期间会产生地震波的一种自然现象。地球上板块与板块之间相互挤压碰撞,造成板块边沿及板块内部产生错动和破裂,是引起地震的主要原因。 地震开始发生的地点称为震源,震源正上方的地面称为震中。破坏性地震的地面振动最烈处称为极震区,极震区往往也就是震中所在的地区。地震常常造成严重人员伤亡,能引起火灾、水灾、有毒气体泄漏、细菌及放射性物质扩散,还可能造成海啸、滑坡、崩塌、地裂缝等次生灾害。据统计,地球上每年约发生500多万次地震,即每天要发生上万次的地震。其中绝大多数太小或太远,以至于人们感觉不到;真正能对人类造成严重危害的地震大约有十几二十次;能造成特别严重灾害的地震大约有一两次。人们感觉不到的地震,必须用地震仪才能记录下来;不同类型的地震仪能记录不同强度、不同远近的地震。世界上运转着数以千计的各种地震仪器日夜监测着地震的动向。地震成因:地球表层的岩石圈。地壳岩层受力后快速破裂错动引起地表振动或破坏就叫地震。由于地质构造活动引发的地震叫构造地震;由于火山活动造成的地震叫火山地震;固岩层(特别是石灰岩)塌陷引起的地震叫塌陷地震。

二、项目所需数据介绍

中国地震台网网址:http://news.ceic.ac.cn/index.html,这里可以显示查看最新的全球地震信息,还支持地图显示地震信息,历史查询等。

在“快速查询”模块里查询“最近一年内地震”,将所查询到的数据“保存到本地”。

打开文件,将文件表头设置为英文:earthquark_time(地震时间)、magnitude(地震等级)、longitude(经度)、latitude(纬度)、depth(地震深度)、address(地震发生具体地点),以方便使用;将修改好的文件以“csv”形式保存。如第一条数据表明2018年11月11日22时03分,北大西洋经度-50.03纬度15.52发生6.3级地震,地震深度10km。

三、数据分析过程代码和解释说明

import numpy as np
import pandas as pd
import seaborn as sns
from pandas import read_csv
from sklearn.linear_model import LinearRegression
#导入相关包, 解决可视化matploblib中文显示的问题
import matplotlib as mpl
import matplotlib.pyplot as plt 
from matplotlib.pylab import style
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

图2

打开存放路径为C:\Users\Administrator\Desktop的文件earthquake.csv;并使用GBK编码:指中国的中文字符,其中包含了简体中文与繁体中文字符;并默认阅读前五行数据。从图中可看出,表中共有六列数据:Earthquake_time、magnitude、latitude、longitude、depth、Earthquake_Location;分别为地震时间、地震级别、经度、纬度、地震深度、地震地点。

# 解决中文乱码问题,指定字体
#sans-serif就是无衬线字体,是一种通用字体族。
#常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica, 中文的幼圆、隶书等等。
style.use('ggplot')    
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 
#按地震等级排序
df_score=df.sort_values('magnitude',inplace=True)
df_score=df.sort_values('magnitude',ascending=False)
df.head()
loc = df_score.Earthquake_Location[:10] #x轴坐标
m = df_score.magnitude[:10] #y轴坐标
plt.bar(range(10),m,tick_label = loc) 
plt.ylim ((1,10))#设置纵坐标轴范围
plt.title(u'近一年震级最高top10',fontproperties=font) #标题
plt.xlabel(u'地震具体位置',fontproperties=font)   #x轴标题
plt.ylabel(u'地震级别',fontproperties=font) #y轴标题
plt.legend((u'近一年震级最高top10',u'地震具体位置',u'地震级别'),loc='best',prop=font)
#为每个条形图添加数值标签
for x,y in enumerate(list(m)):
    plt.text(x,y+0.2,'%s' %round(y,1),ha='center') 
plt.xticks(rotation=290) #x轴名称太长发生重叠,旋转为纵向显示
plt.tight_layout() #自动控制空白边缘,以全部显示x轴名称
plt.savefig('近一年震级最高top10.png') #保存图片
plt.show()

#从日期中提取月份
df['month'] = pd.DatetimeIndex(df['Earthquake_time']).month
print(df.info())
print(df.head())

#统计各月发生地震次数
grouped_month = df.groupby('month')
grouped_month_amount = grouped_month.Earthquake_time.count()
top_month = grouped_month_amount.sort_values(ascending = False)
print(df.groupby('month'))
for i in grouped_month:
    print(i)

#绘图
top_month.plot(kind = 'bar',color = 'red')
for x,y in enumerate(list(top_month.values)):
     plt.text(x,y+0.8,'%s' %round(y,1),ha = 'center',color = "black")
plt.title('今年全球每月地震发生次数',color='green')
plt.xlabel('月份')   #x轴标题
plt.ylabel('地震次数') #y轴标题
plt.xticks(rotation=360) 
plt.tight_layout()
#plt.savefing('近一年全球每月发生地震次数排名.png')
plt.show()

#绘制饼图并保存
count=df['Earthquake_Location'].value_counts()
plt.pie(count,labels=count.keys(),labeldistance=1.4,autopct='%2.1f%%')
plt.axis('equal')#使用图为正圆形
plt.legend(loc='upper left',bbox_to_anchor=(-0.1,1))
#plt.savefing(''pie_chart.jpg)
plt.show()

#绘制饼图并保存
count=df['magnitude'].value_counts()
plt.pie(count,labels=count.keys(),labeldistance=1.4,autopct='%2.1f%%')
plt.axis('equal')#使用图为正圆形
plt.legend(loc='upper left',bbox_to_anchor=(-0.1,1))
#plt.savefing('pie_chart.jpg')
plt.show()

from wordcloud import WordCloud 
columns=['Earthquake_time','magnitude','latitude','longitude','depth','Earthquake_Location','Url']#设置表头
df = read_csv('C:\\Users\\HP\\Desktop\\earthquake.csv',encoding='GBK',header = None,names=columns)#打开表格
#df=df.['Earthquake_Location'].sort_values(ascending=False)
#df.head()
df = df.groupby(by = 'Earthquake_Location').count()
df = df['magnitude'].sort_values(ascending = False)
#print(df[:10])
font_path='simfang.ttf' #仿宋
#background_Image='ditu.jpg'
wordcloud = WordCloud(
    background_color = 'red',
    font_path = font_path,
    #mask=background_Image,
    width = 1200,
    height = 800,
    margin = 2,
    max_font_size = 200,
    random_state = 42,
    scale = 2,
    colormap = 'viridis', #默认virdis
    )
#wordcloud.generate_from_frequencies(df)
#or
wordcloud.fit_words(df)
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis('off')
plt.show()

#相关图
# Import Dataset
df = read_csv('C:\\Users\\HP\\Desktop\\earthquake.csv',encoding='GBK')
# Plot
plt.figure(figsize=(12,10), dpi= 80)
sns.heatmap(df.corr(), xticklabels=df.corr().columns, yticklabels=df.corr().columns, cmap='RdYlGn', center=0, annot=True)
# Decorations
plt.title('Correlogram of earthquake', fontsize=22)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()

四、总结

此次在中国地震台网网址:http://news.ceic.ac.cn/index.html爬取最近一年地震数据,查看最新的全球地震信息、地图显示地震信息、历史查询等。由此次研究可见,我国的地震主要集中在西部的四川、云南、西藏、青海、甘肃、新疆以及东部的台湾,这些地方也就是板块活动频繁的地方。所以生活在这些地区的人们,需要更加注重了解地震的相关知识以及逃生技能。其它省份的人们不需要太过于担心地震,当然也不能掉以轻心。另外,我国周边的尼泊尔、缅甸、菲律宾、日本等国家,也是地震高发区域。

项目实施过程中要注意:

(1) 地震监测点的监测设施能正常运转 

(2) 地震监测设施周围不存在影响其工作效能的干扰源,如飞机场、发电厂等

(3) 由于题目中所监控到的地震均不属于强震,因此不考虑有余震的情况

(4) 对于监测记录中出现的个别数值极大预测均当作极端异常值予以剔除

当前的科技水平尚无法预测地震的到来,未来相当长的一段时间内,地震也是无法预测的。所谓成功预测地震的例子,基本都是巧合。对于地震,我们更应该做的是提高建筑抗震等级、做好防御,而不是预测地震。

地震是一种无法干预、目前还不能完全预测的自然现象和灾害。它告诉我们要敬畏自然、理解自然,并且要通过学习掌握自然规律,来减少灾害造成的影响。希望大家多学习一些跟地震相关的知识,在地震来临时不信谣、不传谣,做好相关的应对措施,正确应对。

地震是人类不可避免的自然灾害,究其发生的缘由主要有:地球各个大板块之间互相挤压.另外还有火山喷发引起。地震分天然地震和人工地震两大类。天然地震主要是构造地震,它是由于地下深处岩石破裂、错动把长期积累起来的能量急剧释放出来,以地震波的形式向四面八方传播出去,到地面引起的房摇地动。构造地震约占地震总数的90%以上。其次是由火山喷发引起的地震,称为火山地震,约占地震总数的7%。此外,某些特殊情况下了也会产生地震,如岩洞崩塌(陷落地震)、大陨石冲击地面(陨石冲击地震)等。人工地震是由人为活动引起的地震。

地震防范主要有三方面措施:

一是地震部门要加强地震监测预报;

二是各级政府视情启动应急预案;

三是广大群众要做好防震避震的准备。

 

  • 4
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值