浅い震源(0〜20km)の大地震が起こりそうな地域を予測する

その買うを、もっとハッピーに。|ハピタス

PythonモジュールのPandasの学習の一環として、今年の1月〜10月までの10ヶ月間に起きた全地震データを基に、今後、何処でマグニチュード6以上の大地震が起こり得るのかを考察してみたいと思います。予測手順は、Pandasを使ってデータから、地震頻度や深さとマグニチュードでフィルタリングしたりして、地震予測に必要なデータを検索・抽出して、さらに、foliumを使って地震発生箇所を視覚化することで発生パターンを見出します。

スポンサーリンク

地震データから地震頻度を検索

先ず、今回の学習に使用するデータをロードします。

import pandas as pd

df = pd.read_csv('2019_earthquakes_jan_oct.csv',encoding='utf-8')

最も頻繁に地震が発生している上位20地域を検索してみます。

aaa = df['地名'].value_counts().head(20)
aaa = aaa.rename_axis('地名').to_frame('地震回数')
df_large = pd.DataFrame(aaa)
df_large.reset_index()
地名 地震回数
0 福島県沖 7877
1 宮城県沖 7388
2 茨城県北部 6342
3 熊本県熊本地方 5886
4 茨城県沖 4521
5 岩手県沖 4316
6 奄美大島近海 3881
7 長野県南部 3399
8 日向灘 3382
9 和歌山県北部 3314
10 紀伊水道 2772
11 沖縄本島近海 2655
12 岐阜県飛騨地方 2352
13 千葉県東方沖 2238
14 天草灘 2157
15 長野県中部 2117
16 山形県沖 2009
17 鳥取県中部 1984
18 熊本県天草・芦北地方 1959
19 長野県北部 1833

2011年の東日本大震災の余震が圧倒的に多いことが分かります。沖縄本島近海、奄美大島近海、日向灘、和歌山県北部、紀伊水道、長野県南部は、東海、東南海、南海、日向灘、九州沖、沖縄沖の6連動巨大地震が懸念されます。次に、マグニチュードが2.0以上の地震のみに絞って地震頻度を検索してみます。

df1 = df[df['マグニチュード']>=2.0]
aaa = df1['地名'].value_counts().head(20)
aaa = aaa.rename_axis('地名').to_frame('地震回数')
df_large = pd.DataFrame(aaa)
df_large.reset_index()
地名 地震回数
0 福島県沖 1641
1 沖縄本島近海 1314
2 宮城県沖 824
3 三陸沖 810
4 奄美大島近海 707
5 奄美大島北西沖 627
6 台湾付近 620
7 茨城県沖 565
8 宮古島北西沖 502
9 与那国島近海 477
10 宮古島近海 460
11 岩手県沖 390
12 奄美大島北東沖 355
13 北海道東方沖 331
14 沖縄本島北西沖 325
15 日向灘 306
16 青森県東方沖 298
17 八丈島東方沖 290
18 根室半島南東沖 247
19 千葉県東方沖 246

マグニチュード2以上の地震については、沖縄、奄美大島、宮古島、与那国島、台湾が、東日本大震災の余震並に多いのがかなり気になります。今度は、マグニチュード3.0以上の地震に絞って検索してみます。

df2 = df[df['マグニチュード']>=3.0]
aaa = df2['地名'].value_counts().head(20)
aaa = aaa.rename_axis('地名').to_frame('地震回数')
df_large = pd.DataFrame(aaa)
df_large.reset_index()
地名 地震回数
0 台湾付近 331
1 福島県沖 282
2 沖縄本島近海 261
3 三陸沖 199
4 宮城県沖 164
5 鳥島近海 161
6 八丈島東方沖 139
7 北海道東方沖 125
8 宮古島北西沖 123
9 択捉島南東沖 117
10 千島列島 95
11 茨城県沖 93
12 奄美大島近海 92
13 与那国島近海 92
14 関東東方沖 84
15 岩手県沖 81
16 宮古島近海 80
17 日向灘 79
18 青森県東方沖 76
19 奄美大島北西沖 62

マグニチュード2以上と比べると、そんなに違いがないように見受けられるので、今度は、マグニチュード4以上の地震に絞って検索してみます。

df_4 = df[df['マグニチュード']>=4.0]
aaa = df_4['地名'].value_counts().head(20)
aaa = aaa.rename_axis('地名').to_frame('地震回数')
df_large = pd.DataFrame(aaa)
df_large.reset_index()
地名 地震回数
0 台湾付近 89
1 鳥島近海 56
2 千島列島 55
3 硫黄島近海 44
4 福島県沖 41
5 択捉島南東沖 35
6 沖縄本島近海 34
7 宮城県沖 28
8 宮古島北西沖 25
9 父島近海 23
10 三陸沖 23
11 フィリピン付近 21
12 北海道東方沖 20
13 小笠原諸島西方沖 20
14 八丈島東方沖 17
15 日向灘 16
16 青森県東方沖 13
17 与那国島近海 13
18 十勝沖 11
19 茨城県沖 10

台湾、千島、鳥島、硫黄島等の、日本本土から離れた所で、マグニチュード4以上の地震が多発していることが分かります。福島県沖、宮城県沖、三陸沖、青森県東方沖、岩手県沖で未だにマグニチュード4以上の余震が100回以上起きていることに驚かされます。次に、今年起きた地震のマグニチュードが大きい上位20地域を検索してみます。

df.sort_values(by="マグニチュード", ascending = False).head(20)
経度 緯度 深さ マグニチュード 地名
96084 2019/6/29 00:51:27.9 19.602222 144.634167 456 6.7 マリアナ諸島
88232 2019/6/18 22:22:19.9 38.601111 139.468611 14 6.7 山形県沖
111564 2019/7/28 03:31::6.7 33.151667 137.385556 393 6.6 三重県南東沖
56203 2019/4/18 14:01::6.4 24.001667 121.502222 20 6.5 台湾付近
22031 2019/2/12 21:34:17.8 19.384167 145.700278 127 6.5 マリアナ諸島
118287 2019/8/8 06:28::3.4 24.367778 121.866944 38 6.4 台湾付近
116271 2019/8/4 19:23::3.5 37.701111 141.619167 45 6.4 福島県沖
67349 2019/5/10 08:48:41.6 31.800000 131.967778 25 6.3 日向灘
81278 2019/6/4 13:39:15.9 29.050833 139.651944 445 6.2 鳥島近海
32689 2019/3/2 12:22:55.5 42.001111 146.851944 51 6.2 根室半島南東沖
19272 2019/2/7 02:44:48.0 22.234167 146.516667 0 6.2 硫黄島近海
52310 2019/4/11 17:18:18.1 40.351944 143.400556 5 6.2 三陸沖
37071 2019/3/11 18:33:44.1 25.666667 141.018611 12 6.1 硫黄島近海
128824 2019/8/29 08:46:39.3 40.968889 143.018333 21 6.1 青森県東方沖
4742 2019/1/8 21:39:30.0 30.567500 131.152222 30 6.0 種子島近海
111096 2019/7/27 08:37:57.7 20.834722 121.900556 31 6.0 フィリピン付近
36808 2019/3/11 02:10:50.5 36.751944 142.400833 18 6.0 福島県沖
103496 2019/7/13 09:57:43.0 29.233611 128.168611 256 6.0 奄美大島北西沖
113062 2019/7/30 05:37:43.9 32.901944 140.768333 59 5.9 八丈島東方沖
49551 2019/4/5 18:56:51.0 30.385556 139.001389 414 5.9 鳥島近海

山形県沖のマグニチュード6.7の地震に絞って考察してみたいと思います。先ず、この地震発生以前のこの周辺の地震発生状況を検索してみます。

df3 = df[(df['日']<='2019/6/18') & (df['時']<='22:22:19.9')]
df4 = df3[(df3['地名'].str.contains('山形'))|(df3['地名']=='新潟県上中越沖')|
          (df3['地名']=='秋田県沖')|(df3['地名'].str.contains('下越'))]
スポンサーリンク

震源地をfoliumで視覚化する

検索結果をfoliumで視覚化してみます。

import folium

m = folium.Map(location=[35.658099,139.741357],tiles="OpenStreetMap",zoom_start=6)
for i in range(0,len(df4)):
    if df4.iloc[i]['マグニチュード'] < 1.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.5*df4.iloc[i]['マグニチュード']+1,
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='blue',fill_color='blue',).add_to(m)                      
    if df4.iloc[i]['マグニチュード']>=1.0 and df4.iloc[i]['マグニチュード']<2.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.9*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='red',fill_color='red',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=2.0 and df4.iloc[i]['マグニチュード']<3.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.8*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='green',fill_color='green',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=3.0 and df4.iloc[i]['マグニチュード']<3.5:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.7*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='cyan',fill_color='cyan',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=3.5 and df4.iloc[i]['マグニチュード']<4.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.6*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='magenta',fill_color='magenta',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=4.0 and df4.iloc[i]['マグニチュード']<4.5:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.5*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='purple',fill_color='purple',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=4.5 and df4.iloc[i]['マグニチュード']<5.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.4*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='darkyellow',fill_color='darkyellow',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=5.0 and df4.iloc[i]['マグニチュード']<5.5:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.3*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='violet',fill_color='violet',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=5.5 and df4.iloc[i]['マグニチュード']<6.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=3.2*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='skyblue',fill_color='skyblue',).add_to(m)
    if df4.iloc[i]['マグニチュード']>=6.0:
        folium.CircleMarker([df4.iloc[i]['経度'],df4.iloc[i]['緯度']],
        radius=4.1*df4.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df4.iloc[i]['日']+"<br>"+"発生時刻:"+df4.iloc[i]['時']+
        "<br>"+"震源地:"+df4.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df4.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df4.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='salmonpink',fill_color='salmonpink',).add_to(m)
m

M6.7の震源地の周囲で比較的震源が浅い小さな地震が頻発していたことが見て取れます。特に1月に起きたM3.0の地震が鍵になっているような気がするので、震源の深さが20km以下のM3以上の地震に絞って検索にかけてみます。

df5 = df2[df2['深さ']<=20]

ワードプレスでは610以上のデータは表示できないので、データを削るために一部の地域の地震を省かざるを得ません。

df6 = df5[df5['地名'].str.contains('台湾|フィリピン|宮古島|択捉')==False]
import folium

m = folium.Map(location=[35.658099,139.741357],tiles="OpenStreetMap",zoom_start=6)
for i in range(0,len(df6)):
    if df6.iloc[i]['マグニチュード']>=2.0 and df6.iloc[i]['マグニチュード']<2.5:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.9*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='red',fill_color='red',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=2.5 and df6.iloc[i]['マグニチュード']<3.0:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.8*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='green',fill_color='green',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=3.0 and df6.iloc[i]['マグニチュード']<3.5:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.7*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='cyan',fill_color='cyan',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=3.5 and df6.iloc[i]['マグニチュード']<4.0:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.6*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='magenta',fill_color='magenta',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=4.0 and df6.iloc[i]['マグニチュード']<4.5:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.5*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='purple',fill_color='purple',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=4.5 and df6.iloc[i]['マグニチュード']<5.0:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.4*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='darkyellow',fill_color='darkyellow',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=5.0 and df6.iloc[i]['マグニチュード']<5.5:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.3*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='violet',fill_color='violet',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=5.5 and df6.iloc[i]['マグニチュード']<6.0:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=3.2*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='skyblue',fill_color='skyblue',).add_to(m)
    if df6.iloc[i]['マグニチュード']>=6.0:
        folium.CircleMarker([df6.iloc[i]['経度'],df6.iloc[i]['緯度']],
        radius=4.1*df6.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df6.iloc[i]['日']+"<br>"+"発生時刻:"+df6.iloc[i]['時']+
        "<br>"+"震源地:"+df6.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df6.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df6.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='salmonpink',fill_color='salmonpink',).add_to(m)
m

福島県浜通り〜茨城県北部のラインが少し気になります。この辺で大地震が起こると、福島原発が大変なことになるので、地震が起きないように祈るしかありません。関東地方を見ると、震源が浅い震度3以上の地震が、首都圏ではほとんど起きていないことが見て取れます。というのも、首都圏で起こる地震のほとんどが、フィリピン海プレート上面か太平洋プレート上面が震源のプレート境界地震か、フィリピン海プレートか太平洋プレートのスラブ内で起こる地震だからです。最後に、震源の深さが50km以上で80km以下、マグニチュードが3.2以上の地震の発生状況をマッピングしてみたいと思います。

df7 = df[(df['深さ']>=50) & (df['深さ']<=80) & (df['マグニチュード']>=3.2)]
#df8 = df7[df7['地名'].str.contains('台湾|フィリピン|宮古島|択捉')==False]
import folium

m = folium.Map(location=[35.658099,139.741357],tiles="OpenStreetMap",zoom_start=6)
for i in range(0,len(df7)):
    if df7.iloc[i]['マグニチュード']>=3.0 and df7.iloc[i]['マグニチュード']<3.5:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=3.1*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='green',fill_color='green',).add_to(m)
    if df7.iloc[i]['マグニチュード']>=3.5 and df7.iloc[i]['マグニチュード']<4.0:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=3.2*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='blue',fill_color='blue',).add_to(m)
    if df7.iloc[i]['マグニチュード']>=4.0 and df7.iloc[i]['マグニチュード']<4.5:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=3.3*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='purple',fill_color='purple',).add_to(m)
    if df7.iloc[i]['マグニチュード']>=4.5 and df7.iloc[i]['マグニチュード']<5.0:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=3.4*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='darkyellow',fill_color='darkyellow',).add_to(m)
    if df7.iloc[i]['マグニチュード']>=5.0 and df7.iloc[i]['マグニチュード']<5.5:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=3.8*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='violet',fill_color='violet',).add_to(m)
    if df7.iloc[i]['マグニチュード']>=5.5 and df7.iloc[i]['マグニチュード']<6.0:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=4.2*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='white',fill_color='red',).add_to(m)
    if df7.iloc[i]['マグニチュード']>=6.0:
        folium.CircleMarker([df7.iloc[i]['経度'],df7.iloc[i]['緯度']],
        radius=4.5*df7.iloc[i]['マグニチュード'],
        popup=folium.Popup('<div style="font-size: 18pt; color : black">'
        +"発生日:"+df7.iloc[i]['日']+"<br>"+"発生時刻:"+df7.iloc[i]['時']+
        "<br>"+"震源地:"+df7.iloc[i]['地名']+"<br>"+"マグニチュード:"+
        df7.iloc[i]['マグニチュード'].astype(str)+"<br>"+"震源の深さ:"+
        df7.iloc[i]['深さ'].astype(str)+"km"+'</div>',max_width=330,min_width=330,
        parse_html=False),color='salmonpink',fill_color='salmonpink',).add_to(m)
m

内陸部において、茨城県南部と千葉県北西部が突出して多いことが見て取れます。次回は、この地域に焦点を当てて検証してみたいと思います。

スポンサーリンク
スポンサーリンク