LoginSignup
6
5

More than 5 years have passed since last update.

【pandas】気象データで遊んでみた♬

Last updated at Posted at 2018-07-29

今年は異常な暑さだということで、気象データいじって何か出てこないかなということで、ググってみると、以下の記事があった。
【参考】
あまりに暑いので,140年分の気温をProphetで分析した

最近よく聞くpandasを使ってデータ整理しているので、興味を持った。
また、できれば気温を単純にLSTMしてみようかと考えていたので、ちょうどいい題材だ。

やったこと

(1)気温と雨量の取得
(2)平均と積算;最高気温の年変化と経年変化、雨量との関係
(3)ちょっと考察、。。

(1)気温と雨量の取得

もうここは以下のようなコードで上記参考のとおりに実施しました。
過去の気象データ・ダウンロード

read_path = 'data/'
data_ave = pd.DataFrame()
with codecs.open(read_path+"data_1878.csv", "r", 
                     "Shift-JIS", "ignore") as f:
    data2 = pd.read_table(
            f, delimiter=",", skiprows=5, index_col=0, 
            usecols=[0, 1, 4])
data2.index = pd.RangeIndex(start=0, stop=len(data2), step=1)
print(data2)

data_ave = data2
data_ave.columns = ['temp', 'rain']

plt.figure(num=None, figsize=(30, 15), dpi=60)
print('Plotting Results')
plt.subplot(2, 1, 1)
plt.plot(data_ave['temp'])
plt.subplot(2, 1, 2)
plt.plot(data_ave['rain'])
plt.pause(3)
plt.savefig('plot_epoch_{0:03d}_temp.png'.format(1878), dpi=60)
plt.close()

以下は、上段が1888年から10年間の最高気温と下段が日雨量です。
plot_epoch_1878_temp.png

これを1878年から2018年まで10年ごとにまとめて取得しました。
そして、このデータを処理することになります。

(2)平均と積算;最高気温の年変化と経年変化、雨量との関係

しかしPandasの初心者には結構厳しい。。。
まず、全体の推移は以下のようになっていて、参考記事の結果と同じく、最高気温の経年変化は徐々に増加しているようです。。一方雨量も少し増えているかな。
plot_epoch_all_data_temp.png

ということで、ほんとにそうなっているか、10年分くらいずつ平均して変化を分析したいところですが、隣り合った年の平均は取りずらい。。

ということで、リンクのコードで10年を束にして全体の平均をとって、一年の経年変化を重ねて描いてみました。
plot_epoch_data_ave_mon1_temp.png
そして、これを平均したのが以下の結果です。
つまり140年の平均です。
plot_epoch_data_ave_mon2_temp.png
この図も結構な情報があります。
つまり、事実として
・夏至からひと月以上ピークがずれている
・秋と梅雨に気温が低めな季節がある
・秋は梅雨よりも雨量が多いようだ
・雨季から乾季への変化が急激に起きている
・夏季と冬季は雨量が少ない
などなど、。。。

しかし、上記の気温のここ140年の変化をきちんととらえるために、やはり10年毎の平均の経年変化を取りたくて、リンク先のコードで再集計してみた。
結果は以下のとおり、。。。
plot_epoch_2008_allpandas_year.png
残念ながら、それぞれの年度の線が識別できなかった。
しかし、寄せ集めながら、上記の140年の平均を先にやって、10年の平均をとったものと比較すると、若干線が太くなっており、これがあの数度の経年変化を示しているようだ。この様子はおまけに示した図を丁寧に見ればどのように経年変化しているか見える。

(3)ちょっと考察、。。

そもそも年変化の説明として妥当なのはなんなの??
よくQAとかでは、海の水がというのがあって、熱容量の問題だと思えば、それはそうかもなあ~というところ。。。それではほんとに海水温はそうなっているのか??
kaisuion.jpg

上記は神奈川県水産技術センターが公開しているデータとのことで、かなり同じような推移してますね。
しかし、これは水温と最高気温がほぼ比例しているということであって、ほんとうの理由とはいいがたいと思います。なにせ、非線形すぎる。。。むしろ降水量が効いてるんではないか。。。日照時間や湿度というか大気中の水分量とか。。そもそも大気のマクロ運動。。つまり赤道と極地方の大気の大移動。。偏西風蛇行(その逸脱版の寒冷渦)や台風や。。。エルニーニュ。。。マッデン・ジュリアン振動
いずれにしても、単純な高層圏の不活性ガスやオゾンや水蒸気などだけの問題ではないだろう。。

そもそも太陽活動が一番効いてくるはずで、そういうことを考慮して一番メジャーな影響要素を見つけるのが正しい方向性だと思う

まとめ

・気温と降水量を取得してpandasで遊んでみた
・140年間を見ると、最高気温の年変化は上昇しているように見える
・平均すると、年平均の変化が綺麗に得られた

・pandasでのデータ取り回しやPlotが今一つ自由じゃない
・LSTMでの予測ができていない

【参考】pandas
Python pandas プロット機能を使いこなす
pandasのplotメソッドでグラフを作成しデータを可視化

おまけ

1878-2008.gif

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5