台風のピークは何月?年間の発生数は増えてる?データ分析で見る台風

データ分析

こんにちは、ぽっけです。

9月も下旬に差し掛かりましたが、先週の3連休は初日が台風で大変でしたね。

台風といえば日本の自然災害の中で最も発生件数が高いそうで、我々日本国民としては憎っくきものなわけですが、今回はそんな台風についてビッグデータを活用してより深く知ろうという試みです。

台風の年間発生数の推移、また台風が最も発生するのは何月か?これらについて調べてみました。

はじめに

データは気象庁が公表しているこちらから。
2001年〜2020年までの約18,000件の台風情報を利用します。
北西太平洋または南シナ海領域で発生した台風について、時間や緯度・経度、中心気圧、風速、サイズ、そして上陸したか否かが記載されているCSVファイルです。

またPythonコードはKaggleのnotebookを少しだけ参考にさせてもらいました。
勉強中のためツッコミどころが多いかと思います。有識者の方は下のコメント欄などからアドバイス等くださると大変嬉しいです。

前準備

まず必要なライブラリとデータを用意します。

import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import math
import seaborn as sns
import matplotlib as mpl
mpl.style.use('ggplot')

mpl.style.use(‘ggplot’)はプロットの見た目がかっこよくなるやつ。

for i in range(len(os.listdir('../input'))-1):
    year = str(2001+i)
    name = 'table' + year + '.csv'
    if i == 0:
        data = pd.read_csv('../input/'+name, encoding='shift-jis')
    else:
        data = pd.concat([data,pd.read_csv('../input/'+name, encoding='shift-jis')],axis=0)

data = data.rename(columns = {'年':'year','月':'month','日':'day','時(UTC)':'hour','台風番号':'typhoon number' ,'台風名':'typhoon name','階級':'grade','緯度':'longitude','経度':'latitude' ,'中心気圧':'center pressure','最大風速':'max wind speed' ,'50KT長径方向':'50KT major axis direction','50KT長径':'50KT major axis diameter' ,'50KT短径':'50KT minor axis diameter','30KT長径方向':'30KT major axis direction' ,'30KT長径':'30KT major axis diameter','30KT短径':'30KT minor axis diameter','上陸':'landing'})

気象庁のCSVデータはカラム名が日本語になっています。
一度そのまま処理してみたのですが所々でエラーが出たため、参考にしたnotebookにならって英語に変換してます。

データの中身を見てみるとこんな感じ。

データの見方についてですが、例えば最下行の「landing」について。
これは台風が上陸したか否かを表していて、上の表示範囲ではすべて0になっているため上陸してないんだなってわかります。

その他データ表記とその意味についての詳細はこちらを参照してみてください。

台風の数、規模は増えているか?

地球温暖化がヤバい、異常気象が増えている、スーパー台風が云々と聞かされてきた身としては、当然台風はその数も規模も年々増えてるんだろうなって思い込んでいたのですが、今回調べてみると意外とそうでもないことがわかりました。

あくまで2001年〜2020年の20年間での統計ではありますが。

というわけでまずはヒートマップで各データ要素同士の相関を見てみましょう。

2つの要素間で正の相関があるほど青、負の相関があるほど赤で示されています。

特徴的なのは「grade」と「center pressure」でしょうか。

まあ「中心気圧が低いほど台風が発達していてそのサイズも大きい」、また「台風の中心気圧が低くサイズが大きいほど高くgradeがつけられる」という当然のことが確かめられただけです。

ここで「year」と台風規模やサイズを表す要素との相関があれば、だんだん台風がひどくなってる!と言えてデータとしては面白かったのですが、そんなことはありませんでした。

 

一応、年ごとの台風発生数と上陸数をグラフにしてみましょう。

元の約18,000件のデータは、同じ台風について何回か重複して観測したデータを含んでいるので、次のような処理をしてからプロットしてみました。

'''重複している同じ台風についてのデータを削除、その年ごとの台風発生数をプロット'''
temp1 = data[['year', 'month', 'typhoon number']].drop_duplicates(subset='typhoon number')
temp2 = temp1.groupby('year').count()['typhoon number']

def typhoons_yearwise(size=(13, 5)):
    plt.figure(figsize=size)
    plt.plot(temp2, color='blue')
    plt.title('numbers of typhoons')
    plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))
    plt.show()


'''上陸した台風について、同様にして重複を削除、プロット'''
temp3 = data[data['landing'] == 1][['year', 'month', 'typhoon number']].drop_duplicates(subset='typhoon number')
temp4 = temp3.groupby('year').count()['typhoon number']

def landed_typhoons_yearwise(size=(13, 5)):
    plt.figure(figsize=size)
    plt.plot(temp4, color='blue')
    plt.title('numbers of landed typhoons')
    plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))
    plt.show()
typhoons_yearwise()
年ごとの台風発生数の推移
landed_typhoons_yearwise()
年ごとの台風上陸数の推移(2020年は上陸数ゼロでした)

このように年によって発生数も上陸数もバラバラだということがわかりました。

へ〜って思ったのは、2020年は台風の上陸がなかっということです。
昨年は新型コロナでてんやわんやでしたから、不幸中の幸いだったんだなと。

台風のピークは何月?

台風の発生数が最も多い月について調べてみます。

temp5 = temp1.groupby('month').count()['typhoon number']

def typhoons_monthwise(size=(13, 5)):
    plt.figure(figsize=size)
    plt.plot(temp5, color='blue')
    plt.title('numbers of typhoons')
    plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))
    plt.show()


temp6 = temp3.groupby('month').count()['typhoon number']

def landed_typhoons_monthwise(size=(13, 5)):
    plt.figure(figsize=size)
    plt.plot(temp6, color='blue')
    plt.title('numbers of landed typhoons')
    plt.gca().get_xaxis().set_major_locator(ticker.MaxNLocator(integer=True))
    plt.show()
typhoons_monthwise()
月ごとの台風発生数の推移(2001〜2020)
landed_typhoons_monthwise()
月ごとの台風上陸数の推移(2001〜2020)

台風は年間を通じて発生しているということ、また上陸するのは5月から10月の間、そしてピークは8月であることがわかりました。

9月も終わりに近いですが、まだまだ油断できないですね。

余談

CSVデータを見ている時、台風名に「CIMARON」みたいなのが記載されていまして、何だこれと思ったらアジア名らしいです。(CIMARONはフィリピンで野生牛を意味する)

日本を含む14カ国で構成される政府間組織では、各国から提案された140のアジア名を発生順に台風に命名しています。

動物や植物、一般的な人名のアジア名が採用されていて、日本からは「KOINU」や「KAJIKI」などの10個が提案されています。

はじめなんで犬?なんでカジキ?と思いましたがこれは星座に由来する名前らしく、特定の事物に絡んだり利害関係を生じないような中立的なものがよいという理由でそうなっているんだとか。

アメリカではハリケーンに「カトリーナ」といった女性名がつけられるのは有名ですけど、たしかにそんな人名つけちゃって色々大丈夫かなって思いますよね。

ちなみに現在では男性名も使ってるらしいです。
それから「カトリーナ」は大きな被害を出したためにハリケーンの命名リストから除外されているらしい。永久欠番みたいな。詳しくはこちら

まとめ

というわけで、台風は増えてるの?ピーク月はいつ?について見てきたわけですが、少なくとも2001年からの20年間については台風は増えているとは言えないこと、ピークは8月ということがわかりました。

データ分析としてここからさらに発展させることを考えると、たぶん各台風が出した被害額とか、上陸地点とか、海上の水蒸気量だとかも複合的に考えて温暖化とつなげたりするといいのかもしれません。いつかやってみたい。

それから練習として今後もこうしたデータ分析に関する記事を定期的に上げていきたいと思ってますので、なんだこの汚ないコードは!とか思っても暖かく見守っていただけると嬉しいです。

ソースコードについてはGithubにて公開する予定でいますので更新をお待ち下さい。

 

9.26追記:
Githubで公開する意味はあるのかと今になって考えていますが、とりあえずやってみました!
Repository作成は初めてで苦戦しましたがなんとか公開できました!
ご興味のある方はのぞいてみてください!

GitHub - pokkkke/JPN_typhoon: year/month-wise numbers of typhoons of Japan.
year/month-wise numbers of typhoons of Japan. Contribute to pokkkke/JPN_typhoon development by creating an account on GitHub.

 

おわり



コメント

タイトルとURLをコピーしました