なんちゃってだよ

見習いデータアナリストになった元SE→元コンサルによるなんちゃってデータ分析

【Python】【可視化】東京の気温の今と昔

今と昔では気温が全然違うという話題があるので、データを取得して可視化するだけのメモです。 とくにメッセージ性もなく可視化するので、あまり有意義ではないと思いますが、ご承知おきください。

環境

  • Python
  • ネットワークが通り、エアコンの効いた部屋

データ取得

  • 気象庁の過去データ: www.data.jma.go.jp
  • 今回は、東京の1875~2022年の7月と8月の最高気温だけ拝借することで、データ量を節約
  • 列名を手動で修正 (日付の列を「yyyymmdd」、 最高気温の列を「max_temp」)
  • その他不要な行、列を削除

パッケージ

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

データ加工部分の処理

data = pd.read_csv("tenki/data.csv", parse_dates=["yyyymmdd"], dtype={"max_temp": float})
data = data.dropna(axis=0) #値が無い行を削除

data.loc[:,"yy"] = data["yyyymmdd"].dt.year
data.loc[:,"mm"] = data["yyyymmdd"].dt.month

可視化部分の処理

  • 凡例に全部の年を表出させると多すぎるので、10年づつにさせるためにif文書いてます (もっといい書き方あったら教えてください)
  • 特に意味はないですが、8月のデータだけ使いました。意味はないです。
fig, ax = plt.subplots(1, 1, figsize=(10,5))
col_map = sns.color_palette("rainbow",2023-1875)

for i in range(0,2023-1875):
    if i%10 == 7:
        sns.kdeplot(
            data.loc[(data["yy"]==i+1875)&(data["mm"]==8), "max_temp"], 
            shade=True, label=i+1875, alpha=.1, color=col_map[i], ax=ax
        )
    else:
        sns.kdeplot(
            data.loc[(data["yy"]==i+1875)&(data["mm"]==8), "max_temp"], 
            shade=True, alpha=.1, color=col_map[i], ax=ax
        )

plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0)
plt.show() # おまじない
plt.close() # おまじない
plt.clf() # おまじない

お詫び

  • 個人的なPythonのリハビリでした。
  • こういう、グラフを沢山並べるのは見づらいので避けるべきというのが個人的な感想です。
  • でも、わざと沢山ならべて、見づらいけどそれでもなお、最近の方があついね~というメッセージ性が伝えられるんじゃないかと(何を言っているのか)