はじめに
Python、pandas、matplotlib、seabornを使って気象庁からデータを取得し
平均気温、降水量、日照時間の折れ線グラフを作成します。
気象庁のHPから、好きな地域のCSVファイルをダウンロードしておきます。
完成形の確認
以下のようなグラフが本記事のゴールです。
最終的なコードは以下の通りです。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.font_manager
df_weather = pd.read_csv('weather_sample.csv',encoding="SHIFT-JIS", index_col='日付',parse_dates=True)
df_weather = df_weather[['Unnamed: 1','Unnamed: 4','Unnamed: 8']][4:]
df_weather = df_weather.set_axis([ '平均気温(℃)','降水量の合計(mm)', '日照時間(時間)'], axis=1)
df_weather = df_weather.astype('float64').head(30)
sns.set(font='MS Gothic',context='talk')
plt.figure(figsize=(40,10))
plt.xticks(rotation=45)
sns.lineplot(data=df_weather)
ライブラリのインポート
必要なライブラリをインポートします。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.font_manager
csvファイル読み込み~データ整形
気象庁のHPからダウンロードしたCSVファイルを読み込みます。(ここではweather_sample.csv)
文字コードの指定 → encoding="SHIFT-JIS"
indexとするcolumn名指定 → index_col='日付'
indexをdatetime型に変換 → parse_dates=True
df_weather = pd.read_csv('weather_sample.csv',encoding="SHIFT-JIS", index_col='日付',parse_dates=True)
df_weather = df_weather[2:]
df_weather
平均気温、降水量、日照時間に該当するcolumn名を抽出した上でcolumn名を変更する(平均気温、降水量、日照時間)
set_axisメソッドで全ての列名、行名を変更
行名 → axis=0
列名 → axis=1
object型からfloat型へキャスト → df_weather.astype('float64')
df_weather = df_weather[['Unnamed: 1','Unnamed: 4','Unnamed: 8']]
df_weather = df_weather.set_axis([ '平均気温(℃)','降水量の合計(mm)', '日照時間(時間)'], axis=1)[2:]
df_weather = df_weather.astype('float64')
グラフ化
sns.lineplot(data=df_weather)
サイズが小さかったり、日本語表示されていないので修正
フォント修正
自分の環境で使用できるフォントを確認
グラフの文字サイズ変更 → context='talk'
大きさの順番 → paper < notebook < talk < poster
デフォルトはnotebook
print([f.name for f in matplotlib.font_manager.fontManager.ttflist])
sns.set(font='MS Gothic',context='talk')
sns.lineplot(data=df_weather)
グラフの大きさ、日付の傾き修正
グラフの大きさ変更 → plt.figure(figsize=(40,10))
日付の傾き変更 → plt.xticks(rotation=45)
plt.figure(figsize=(40,10))
plt.xticks(rotation=45)
sns.lineplot(data=df_weather)
学んだこと
①文字コードを指定しないとエラーが発生する場合があること。
②型の確認。
グラフ表示はobject型だとできなく、float型等へキャストが必要で、都度型確認をしたほうが良い