今年の夏も非常に暑いです。暑いのは体感して分かっているのですが、50年前と比べてどのくらい暑くなったのか比べてみたくなりませんか?気象庁が過去の気温データをオープンデータとして配付していますので、これを利用して真夏日と猛暑日をカウントしてグラフを描画してみましょう。

  • 過去50年の真夏日と猛暑日をカウントしてグラフを描画したところ

    過去50年の真夏日と猛暑日をカウントしてグラフを描画したところ

50年前と比べてどのくらい暑いのか調べてみよう

地球温暖化と言われて久しく、年々暑くなっています。とは言え、「50年前と比較してどのくらい暑くなったんだろうか」と気になりませんか。気になったことはサクッとプログラムを作って調べて見ましょう。自分で納得できるまで、調べて見ると新たな発見があることでしょう。

都合が良いことに、気象庁から過去の気温データがオープンデータとして配付されています。そのため、専門家でなくても、気軽に調査できます。悶々と暑さと戦うだけではなく、過去のデータから何かしらの知見が得られないか調べてみましょう。ちなみに「オープンデータ」とは、政府や企業、研究機関などが無償で配付しているデータのことです。誰でも自由に利用できるデータです。

気象庁から過去の気温データをダウンロードできる

気象データは、こちらの気象庁のWebサイトからCSV形式でダウンロードできるようになっています。

  • 「気象庁 > 過去の気象データ・ダウンロード」のページ

    「気象庁 > 過去の気象データ・ダウンロード」のページ

このWebサイトの良いところは、単純に大量の過去の気象データがダウンロードできるだけではなく、必要なデータを選択して、必要なデータだけをCSV形式でダウンロードできるようになっている点にあります。

使い方は単純で、「地点」を選んだ後で、気温や降水量など必要なデータの項目を選び、最後に「期間」を選んで画面右側にある「CSVファイルをダウンロード」ボタンを押すだけです。

50年分の気温データをダウンロードしよう

気象庁の過去の気象データ配付サイトですが、複数の地点が選べるようになっているものの、一回にダウンロードできるデータサイズが制限されています。そこで、今回は、1974年から10年分ずつ日別平均気温と最高気温のデータを、5回に渡ってダウンロードしてみましょう。

ここでは、次のように選択してダウンロードしました。

- (1) [地点] 東京 → 東京を選択
- (2) [項目] 日別値 → 気温 → 「日平均気温」と「日最高気温」を選択
- (3) [期間] 連続した期間 → 1974年1月1日から数年分ごとに繰り返しダウンロード
  • ダウンロードしたCSVを開いたところ

    ダウンロードしたCSVを開いたところ

ただし、筆者が数日に渡って試したところ、頻繁に「アクセスが集中している」と表示され、エラーが出てダウンロードできないことが多くありました。そこで、筆者がダウンロードした1974年から2024年7月8日までのCSVファイルを、こちらからダウンロードできるようにしました。うまくダウンロードできない方はこのデータを利用してください。

なでしこ3のコマンドライン版をColabで使おう

ところで、本連載の主役「なでしこ3」には、実行環境ごとに異なるランタイムが用意されています。Webブラウザ上で実行するブラウザ版(wnako)に加えて、ローカルPC上で実行するコマンドライン版(cnako)が用意されています。ブラウザ版ではセキュリティの関係上ローカルファイルの操作が制限されています。そこで、コマンドライン版(cnako)を使うと、ファイルの読み書きやコマンドの実行など、かなり自由な操作が可能となります。

自分のパソコンに、なでしこ3のコマンドライン版をインストールするのもオススメなのですが、今回は、Googleが提供しているPythonの実行環境であるColaboratory上で、なでしこを使う方法を紹介します。

Colaboratory(以後、Colabと略します)には有料版もありますが、基本的にはGoogleアカウントさえあれば、無料で利用できます。Googleの提供するクラウドマシン上で、プログラムを実行できるため、自分のパソコンの環境に何もインストールする必要がなく、Webブラウザさえあればプログラムを動かすことができるのが特徴です。なお、ColabはPythonの実行環境ですが、ちょっとした工夫で、なでしこのコマンドライン版を動かすことができます。

(手順1)Colabにアクセスして新規ノートブックを作成しよう

こちらのColabにアクセスして、Googleアカウントでログインすると、次のような画面が表示されます。それで、画面左下にある「+ ノートブックを新規作成」ボタンをクリックします。

  • Colabのトップ画面

    Colabのトップ画面

(手順2)なでしこ3を利用するコマンドを実行しよう

Colabでは、ノートブックに表示されたテキストボックスにプログラムを記述し、テキストボックスの左側にある「▶」の実行ボタンを押すことで、プログラムが実行されます。次の図のように(1)の部分にプログラムを記述し、(2)のボタンを押します。

  • なでしこ3を利用するためのコマンドを実行しよう

    なでしこ3を利用するためのコマンドを実行しよう

それで、最初に、なでしこ3のコマンドライン版をインストールして、手軽にプログラムを実行するための関数を定義しましょう。以下のプログラムをコピーして、テキストボックスに貼り付けて実行します。

# なでしこを実行する準備を行う
! npm install -g nadesiko3
import subprocess
def run(src):
  # プログラムを1度ファイルに保存
  with open('input.nako3', 'w') as file:
    file.write(src)
  # 保存したファイルをcnako3に渡して実行する
  result = subprocess.run(['cnako3', 'input.nako3'], text=True, capture_output=True)
  print("---------------")
  print(result.stdout)
  print("---------------")
# ここまで

このプログラムは、シェルスクリプトでなでしこ3をインストールし、Pythonの関数を定義して、なでしこを実行する関数を定義するものです。なでしこの範囲を超えてしまうので詳しくは解説しませんが、このコマンドを最初に実行すると覚えておきましょう。

(手順3)なでしこのプログラムを記述して実行しよう

そして、手順2が正しく実行された後は、「run('''なでしこのプログラム''')」と記述することで、コマンドライン版のなでしこを実行できます。画面左上にある「+ コード」のボタンを押して、テキストボックスを追加して、そこにプログラムを記述しましょう。

例えば、以下のようなプログラムを記述して、実行ボタンを押してみましょう。

run('''
# --- ここになでしこのプログラム ---
「こんにちは」と表示
''')
  • Colabでなでしこのプログラムが実行されたところ

    Colabでなでしこのプログラムが実行されたところ

(手順4)5つのCSVファイルを一つのファイルにまとめよう

それでは、ここから、気象庁のWebサイトからダウンロードしたファイルを使って処理を行いましょう。今回は、筆者が事前にダウンロードしたCSVファイルを利用します。以下のコードを貼り付けて実行しましょう。

# ZIPファイルをダウンロードして解凍
! wget https://github.com/kujirahand/past_temperature_data_japan/archive/refs/tags/v0.0.1.zip
! unzip v0.0.1.zip
! cp past_temperature_data_japan-0.0.1/rawdata/tokyo/* ./

もしも、ご自身で気象庁からCSVファイルをダウンロードした場合には、Colabの左側にあるサイドバーの「ファイル」をクリックして、そこにファイルをドラッグ&ドロップすると、CSVをアップロードできます。下記のように、Colabのカレントディレクトリ(/content)にダウンロードしたCSVが配置されるようにしてください。

  • CSVファイルを準備したところ

    CSVファイルを準備したところ

次いで、以下のプログラムを実行して5つに分かれたCSVファイルを手軽に扱えるように1つにまとめましょう。以下のコードを貼り付けて実行してみましょう。

# 複数のCSVファイルを結合して「all.csv」を作成する
run('''ALL=「」
「*.csv」のファイル列挙
反復:
  対象を表示
  対象をSJISファイル読んでSに代入
  Sを改行で区切ってAに代入
  Aの0から6を配列取り出す # 先頭の6行はヘッダで不要なので
  ALL=ALL&改行&(Aを改行で配列結合)
  ALLをトリムしてALLに代入。
ALLを「all_temp.csv」に保存。
「OK」と表示。
''')

プログラムを実行すると「all|_temp.csv」が作成されます。Colabのサイドバーの「ファイル」を見るとCSVファイルが新規保存されているのを確認できるでしょう。このプログラムでは、次々とShift|_JISで記述されたCSVファイルを読み込んで、不要な冒頭の6行を削除しつつ、結合してCSVファイルを出力します。

  • 実行するとCSVファイルを1つにまとめる

    実行するとCSVファイルを1つにまとめる

(手順5)真夏日と猛暑日の日数を調べよう

次に、「all_temp.csv」を読み込み、その年ごとの真夏日と猛暑日の日数をカウントしてみましょう。真夏日とは日最高気温が30℃以上の日数であり、猛暑日とは35℃以上の日数です。以下のコードを貼り付けて実行してみましょう。

run('''# 真夏日と猛暑日の日数を数える
# 辞書型を初期化
F猛暑日={}
F真夏日={}
Yを1974から2024まで繰り返す:
  F猛暑日[Y] = 0
  F真夏日[Y] = 0
# CSVを開いて真夏日と猛暑日を数える
ALL=「all_temp.csv」を開いて、CSV取得
ALLを反復:
  F年月日は、対象[0]
  F平均気温は、対象[1]
  F最高気温は、対象[4]
  F年月日を「/」で区切ってADに代入
  変数[Y,M,D]=AD
  もし、F最高気温>=35ならば:
    F猛暑日[Y] = F猛暑日[Y]+1
  もし、F最高気温>=30ならば:
    F真夏日[Y] = F真夏日[Y]+1
# 結果をCSVで出力
出力用=「年度,猛暑日,真夏日{改行}」
Yを1974から2023まで繰り返す:
  出力用=出力用&「{Y}年,{F猛暑日[Y]},{F真夏日[Y]}{改行}」
出力用を「result.csv」に保存。
出力用を表示
「OK」と表示。
''')

すると、真夏日と猛暑日をカウントして「result.csv」というCSVファイルに出力します。このプログラムでは、辞書型の変数「F猛暑日」と「F真夏日」を利用して、最高気温が30度か35度以上ならばカウントアップするというものになっています。

  • 真夏日と猛暑日をカウントしてCSVファイルを出力する

    真夏日と猛暑日をカウントしてCSVファイルを出力する

(手順6) Pythonでグラフを出力しよう

ここで生成したCSVを基にして折れ線グラフで描画してみましょう。まずは、Pythonの力を借りてグラフを描画してみましょう。以下のコードを記述して実行すると、Pythonのライブラリ「matplotlib」を使ってグラフを描画します。

# 「result.csv」を読み縦棒グラフを描画する
! pip install matplotlib_fontja
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib_fontja
pd.read_csv('result.csv', index_col=0).plot(kind='line')
plt.show()

実行すると、下記のようなグラフが描画されます。グラフを見ると右肩上がりに真夏日と猛暑日が増えていることが分かりました。

  • CSVファイルを元にグラフを描画したところ

    CSVファイルを元にグラフを描画したところ

(手順7) なでしこを利用してグラフ描画してみよう

Colabのサイドバーを開いて、「ファイル」タブにて「result.csv」を選び、右クリックすると「ダウンロード」メニューが出ます。これをクリックしてダウンロードしたら、なでしこ貯蔵庫にアップロードしてみましょう。

なでしこ貯蔵庫で「新規」ボタンをクリックして、以下の5行のプログラムを貼り付けて実行してみましょう。

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら