[seaborn] 11. 棒グラフと折れ線グラフでカテゴリー内のデータの分布を表示(barplot, countplot, pointplot)

python

はじめに

簡単かつ簡潔にデータを可視化できるライブラリであるseabornを用いて、各カテゴリー内のデータの分布を棒グラフと折れ線グラフで表示する方法について説明する。

コード

解説

モジュールのインポートなど

データの読み込み

3/12〜14の名古屋と松山の気象データを下記サイトから読み込む。

気象庁|過去の気象データ検索
過去の気象データ検索

DataFrameの結合と列の追加

pd.concatでデータフレームを結合した後に、新たな列データ[‘loc’]を追加する。np.tileは同じ要素をもつ配列を作る関数であり、データフレームの長さとおなじサイズの配列を追加した。
名古屋のデータのDataFrameは下記のようになる。(上位5行のみ表示)

現地 海面 降水量(mm) 気温(℃) 露点温度(℃) 蒸気圧(hPa) 湿度(%) 風速 風向 日照時間(h) 全天日射量(MJ/㎡) 降雪 積雪 天気 雲量 視程(km) loc
0 1 1011.6 1018.5 7.5 -0.4 5.9 57 3.8 北西 NaN NaN NaN NaN NaN nagoya
1 2 1012.3 1019.2 7.4 -0.8 5.8 56 4.8 北西 NaN NaN NaN NaN NaN nagoya
2 3 1012.6 1019.6 7.1 -1.1 5.6 56 4.3 西北西 NaN NaN NaN 1 25.0 nagoya
3 4 1013.1 1020.1 6.5 0.0 6.1 63 3.1 北西 NaN NaN NaN NaN NaN nagoya
4 5 1013.8 1020.8 5.9 0.7 6.4 69 3.2 北西 NaN NaN NaN NaN NaN nagoya

松山のデータも同様に処理する。

現地 海面 降水量(mm) 気温(℃) 露点温度(℃) 蒸気圧(hPa) 湿度(%) 風速 風向 日照時間(h) 全天日射量(MJ/㎡) 降雪 積雪 天気 雲量 視程(km) loc
0 1 1016.9 1021.2 6.0 0.6 6.4 68 2.7 NaN NaN NaN NaN 20.0 matsuyama
1 2 1017.5 1021.8 4.8 0.2 6.2 72 1.3 北東 NaN NaN NaN NaN 20.0 matsuyama
2 3 1017.5 1021.8 4.7 -0.3 6.0 70 0.9 東北東 NaN NaN NaN NaN 20.0 matsuyama
3 4 1017.5 1021.8 4.8 -0.6 5.9 68 1.4 東北東 NaN NaN NaN NaN 20.0 matsuyama
4 5 1018.2 1022.5 4.1 -0.5 5.9 72 0.8 北東 NaN NaN NaN NaN 20.0 matsuyama

DataFrameの合体

各データフレームを結合し、データをひとまとめにする。

平均気温をエラーバー付き棒グラフで表示

x軸が”時”, y軸が”気温(℃)”の棒グラフを作成する。hue=”loc”とすることで、場所ごとにそれぞれで平均と信頼区間が計算され、棒グラフとして表示される。data=df.loc[df.時 <4]とすることで1時から3時のデータを用いた。

kind=”count”による要素数の棒グラフ

kind=”count”とすることで選択したカテゴリー内の要素のカウントを行い、棒グラフで表示する。ここでは風向きの要素数を計測して表示した。軸ラベルの重なりを防ぐため、aspect=2で横長グラフとした。

hueを用いたcountplot

hueに’loc’を設定すると、場所ごとの要素数を計測することができる。

hueとrowを用いたcountplot

rowを設定することで、上下に別れて表示される。

折れ線グラフの表示

kind=”point”によりエラーバー付きの折れ線グラフとなる。

折れ線グラフ マーカーと線のスタイルの変更

markers=[“s”, “^”], linestyles=[“–“, “:”]のようにリストで設定することで、グラフにスタイルが反映される。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

Visualizing categorical data — seaborn 0.13.2 documentation

コメント