美文网首页
地震数据的分析

地震数据的分析

作者: 彭健平6点30 | 来源:发表于2017-05-05 21:10 被阅读79次

重大地震,1965年至2016年
所有震级为5.5级以上的地震的日期,时间和地点

import numpy as np
import pandas as pd
import datetime
path='/Users/zhongyaode/Desktop/kaggle-data/'
df=pd.read_csv(path+'database.csv')
df.head()

指标一:平均每年发生多少次;
指标二:年均的级数,;
指标三:级数大于平均级数的总次数;
指标五:地震趋势;
把Date转换成日期格式
magnitude-地震级数;Depth-地震深度;Magnitude Typ-地震类型

df['Date']=pd.to_datetime(df['Date'])
df.iloc[0,0]
Timestamp('1965-01-02 00:00:00')
output_26_0.png output_28_0.png
start_date=df.iloc[0,0]
end_date=df.iloc[-1,0]
print start_date
1965-01-02 00:00:00
print end_date
2016-12-30 00:00:00
delta=(end_date-start_date)/np.timedelta64(1,'D')
#delta=(endTime-startTime)/np.timedelta64(1,'D')
year=delta/365
delta
18990.0
year
52.027397260273972
count=len(df['Time'])
count
23412
#平均每年发生多少次
year_cishu=count/year
year_cishu
449.99368088467617
#这里可以看出每年平均发生450次地震
print df['Magnitude'].sum()
137721.81
total=0
for  x in df['Magnitude']:
    total=total+x
print total
137721.81
#平均每次的地震级数
pingjunjishu=total/count
pingjunjishu
5.8825307534600029
#可以看出每年平均发生500次,每次地震的平均级数是5.88级

cishu=0
for x in df['Magnitude']:
    if x >pingjunjishu:
        x=1
        cishu+=1

print cishu
9304
dayu7=0
for x in df['Magnitude']:
    if x >7:
        x=1
        dayu7+=1

print dayu7
570
dayu8=0
for x in df['Magnitude']:
    if x >8:
        x=1
        dayu8+=1

print dayu8
27
dayu9=0
for x in df['Magnitude']:
    if x >9:
        x=1
        dayu9+=1

print dayu9
2
#有9304的地震大于平均级数
#有570次大于7级
#27次大于8级
#两次大于9级
#画级数的直方图,动态分布图,
import matplotlib.pyplot as plt
from scipy import stats
size_data=df['Magnitude']
size_data.shape

(23412,)
fig=plt.figure()
x=df['Magnitude']
ax=fig.add_subplot(111)
numBins=20
ax.hist(x,numBins,color='red',alpha=0.8,rwidth=0.9)
plt.title(u'jishusize')
plt.show()
#级数的动态分布
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 
%matplotlib inline
%config InlineBackend.figure_format='retina'
def normfun(x,mu,sigma):
    pdf=np.exp(-((x-mu)**2)/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
    return pdf
mean=df['Magnitude'].mean()
std=df['Magnitude'].std()
x=np.arange(3,10,1)
y=normfun(x,mean,std)
plt.plot(x,y)
plt.hist(df['Magnitude'],bins=10,rwidth=0.9,normed=True)
plt.title('IQ distribution')
plt.xlabel('Porbability')
plt.show()
def trendF(dataframe):
    trend=dataframe.loc[:,['Date','Magnitude']]
    trend['date']=pd.to_datetime(trend['Date'])
    trend=trend.set_index('Date')
    #按周分割并计算周消费总和
    s=trend['Magnitude'].resample('Y').sum()
    trendNew=pd.Series.to_frame(s)
    #index format 将年月日改为年周
    trendNew.index=trendNew.index.format(formatter=lambda x:x.strftime('%y'))
    print (df1)
    trendNew.plot()

#自变量是纬度,因变量为地震级数的散点图(气泡的大小可以弄个变量哦);
#简单的数据预处理和分析,下次继续改进哈
plt.scatter(df['Latitude'],df['Magnitude'])
<matplotlib.collections.PathCollection at 0x11209a450>
#地震与时间的趋势图

dny_ts=df.ix[['Magnitude'],'Date'].T
pl.plot(b,c)
[<matplotlib.lines.Line2D at 0x117eb0a90>]
%matplotlib inline
import matplotlib.pyplot as plt

相关文章

网友评论

      本文标题:地震数据的分析

      本文链接:https://www.haomeiwen.com/subject/jdistxtx.html