2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

折れ線グラフの作成(seaborn,matplotlib)

Last updated at Posted at 2022-03-21

はじめに

Python、pandas、matplotlib、seabornを使って気象庁からデータを取得し
平均気温、降水量、日照時間の折れ線グラフを作成します。
気象庁のHPから、好きな地域のCSVファイルをダウンロードしておきます。

完成形の確認

以下のようなグラフが本記事のゴールです。

image.png

最終的なコードは以下の通りです。

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

image.png
平均気温、降水量、日照時間に該当する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)

image.png

サイズが小さかったり、日本語表示されていないので修正

フォント修正

自分の環境で使用できるフォントを確認
グラフの文字サイズ変更 → 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)

image.png

グラフの大きさ、日付の傾き修正

グラフの大きさ変更 → plt.figure(figsize=(40,10))
日付の傾き変更 → plt.xticks(rotation=45)

plt.figure(figsize=(40,10))
plt.xticks(rotation=45)
sns.lineplot(data=df_weather)

image.png

学んだこと

①文字コードを指定しないとエラーが発生する場合があること。
②型の確認。
 グラフ表示はobject型だとできなく、float型等へキャストが必要で、都度型確認をしたほうが良い

2
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?