暑いので気象庁のデータで遊んだ

8月になりました。暑い日が続いておりますが、みなさまいかがお過ごしでしょうか。自分が子供のころはこんなに暑くなかった気がする……と思ったので調べてみようと思い立ちました。

気温データは、気象庁のサイトに行くと、各種データ・資料 > 過去の気象データ・ダウンロードからデータをCSVファイルとしてダウンロードできるようになっています。ただ、ダウンロードできるデータ容量に制限があるので、今回は東京の月ごとの平均気温・最低気温・最高気温を1872年1月から2024年7月までダウンロードしてきました。

JuliaのCSV.jlとDataFrames.jlを使って読み込みます。あとでプロットもしたいし、平均値の計算もしたいので、PlotsとStatisticsも。実行環境は以下のような感じです。

using DataFrames, CSV, Plots, Statistics
versioninfo()
Julia Version 1.10.4
Commit 48d4fd4843 (2024-06-04 10:41 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 12 × Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, skylake)
Threads: 1 default, 0 interactive, 1 GC (on 12 virtual cores)

ダウンロードされるdata.csvの先頭には諸々の情報が入っているのと、実際に観測データがあるのは1875年6月からなので読み込み開始行は48行目と指定しました。メタデータ以外がほしいので、selectで取ってきたい列を指定しています。

temperature = CSV.read("data.csv", DataFrame;
  header=false, skipto=48, select=[1,2,3,6,9]);
rename!(temperature, [:year, :month, :ave, :max, :min]);
temperature[1:10, :]
10×5 DataFrame
 Row │ year   month  ave      max      min
     │ Int64  Int64  Float64  Float64  Float64
─────┼─────────────────────────────────────────
   1 │  1875      6     22.3     32.3     13.7
   2 │  1875      7     26.0     35.1     17.8
   3 │  1875      8     24.9     32.6     16.6
   4 │  1875      9     21.5     31.7     12.8
   5 │  1875     10     15.3     25.7      5.8
   6 │  1875     11      9.7     21.2     -2.7
   7 │  1875     12      4.6     15.5     -3.6
   8 │  1876      1      1.6     15.1     -9.2
   9 │  1876      2      3.4     14.1     -5.0
  10 │  1876      3      8.1     19.7     -5.6

さあ、とりあえずプロットしてみましょう。

plot(temperature[:, :ave], label=false,
  title="Average Temperature", ylabel="Degrees (C)")

1月は寒くて7月は暑いという1年間の変化が上下に細かく出ています。この変動はもちろん大きいのですが、全体としてじわじわと気温が上がっているのが分かります。季節変動を無視して、temperature.month .== 8で8月だけをとってきてプロットしてみます。

flag = temperature.month .== 8;
plot(temperature[flag, :year], temperature[flag, :ave],
  label=false, title="Average Temperature in August",
  xlabel="Year", ylabel="Degrees (C)")

1920年ごろまでは一定ですが、そのあたりから徐々に上がっているように見えます。国土交通省「日本の舗装道路の歴史を教えてください」によると、アスファルト舗装が増えていくのは大正8年(1919年)の「旧道路法」「旧道路構造令」くらいからとのことなので、ちょうど符合します。偶然かもしれませんが。また、2010年以降が平坦になって見えるのは2014年から観測地点が変更になっている影響かもしれません。

最高気温の推移も見てみましょう。

flag = temperature.month .== 8;
plot(temperature[flag, :year], temperature[flag, :max],
  label=false, title="Maximum Temperature in August",
  xlabel="Year", ylabel="Degrees (C)")

1994年に39.1度、1996年に38.7度の最高気温を記録していますが、都心で38度を超えたことは1950年代とかにもあったのですね。日陰で測定していてこの気温ですからね。やばいです。今年も暑いですが、2024年7月29日の37.3度が昨日までの今年の最高気温です。(観測上の最高気温は2004年7月20日の39.5度でした)

全期間の最高気温の平均を計算してみましょう。

mean(temperature[temperature.month .== 8, :max])
#=> 34.57986577181208

高度経済成長期を1955~1970年ごろとして、それより前の最高気温の平均値。

mean(temperature[temperature.month .== 8 .&& temperature.year .< 1955, :max])
#=> 33.81

高度経済成長期終了後の最高気温の平均値。

mean(temperature[temperature.month .== 8 .&& temperature.year .>= 1975, :max])
#=> 35.58163265306123

2000年以降の最高気温の平均値。

mean(temperature[temperature.month .== 8 .&& temperature.year .>= 2000, :max])
#=> 36.275

着実に暑くなっているようです……。エアコンや自動車の普及といった要因もあるのでアスファルト敷設だけが原因ではないと思いますが、都心はまだまだ暑い日が続きそうです。皆様ご自愛ください。