1
0

5月下旬〜6月中旬しんどい理由の仮説を検証したけど外れてた、けどPythonの便利さ実感した話

Posted at

仮説

ある日思いました。

5月下旬〜6月中旬くらい、なんかめっちゃしんどい。
そういえば日の出が早くなっているせいじゃないか・・・?
1日の昼が一番長い夏至は6月下旬だけど、この時期が一番「日の出が早くなっている」のではないか・・・?

この「日の出が早くなるペースが一番早いのは5月下旬説」について、
自分でデータ取得し可視化することで、検証してみました

検証

データ作成

データはどっかに転がってるだろうと思い、ぐぐると、国立天文台のサイトにありました。

HTMLの表形式のデータだったので、beautifulsoupかな…と思いましたが、
pandasのpd.read_html(url)なる関数で、Webサイトの一発で取れるようです。

実際のコード

Google Colaboratoryで動かしました。大体ライブラリ入っており便利です。
UIが独特だったりして慣れない感じはありますが。。。

import pandas as pd

# EmptyなDataFrame準備
df_all = pd.DataFrame()

# forで毎月分取得
for i in range(1, 13):
    print(str(i).zfill(2)) # zfill:01〜12の形式にする
    ii = str(i).zfill(2)
    url = 'https://eco.mtk.nao.ac.jp/koyomi/dni/2024/s13' +ii+ '.html'
    df_tmp = pd.read_html(url) # html内の表を読み取る
    df_tmp2 = df_tmp[0] # 読み取った表のうち、最初のもの
    df_tmp2['month'] = i
    df_all = pd.concat([df_all, df_tmp2])

make_ts = lambda x: pd.Timestamp(2024, int(x['month']), int(x[''])) # 年月日(それぞれの情報)から、Timestampにする関数
df_all['ts'] = df_all.apply(make_ts, axis=1)

# 保存
df_all.to_csv('./20240527_hinode_hinoiri.csv', index=None)

可読性も十分高い20行のコードで、1時間ちょっとで書けて、Webスクレイピング+データ加工できるなんて、Pythonってやっぱすげえなと思いました。
もちろん、pd.read_htmlが一番偉いのですが・・・
(最初、ネットで「HTML 表 スクレイピング」などと検索したところ、beautifulsoupを使う記事ばかりだったのですが、あんな長コード書かなくて済むとは・・・)
同時に、難易度の低いライブラリ・関数等を作ったり、処理をシンプルに見せる工夫も大事だなと思いました。

データ可視化

Tableauでやりました。
Matplotlibでも良いんでしょうが、細かい設定が面倒くさそうだったので。。

  • 日の出、日の入り時刻の分布

image.png

  • 日の出時刻の前日との差

image.png
(青色は傾向線です←Tableauで入れ方分からなかった顔)

これを見ると、日の出時刻の早まるペースが一番ピークとなるのは、3月頃となり、説の立証に失敗しました。
あと、1/1を境に日の出が早くなっていって、7/1を境に日の出が遅くなっていくんですね。(元々そういう定義なのかもしれません・・)

結論

仮説は外れていました。
多分、GW終わりで週5働いて疲労が蓄積している&しばらく祝日がなくてしんどいからでしょう(急に他人事)

でも、こうして「思い立ったらすぐ」データを取ってきて可視化できるので、Pythonの便利さを実感しました。。

1
0
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
1
0