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

python

はじめに

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

コード

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

解説

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

データの読み込み

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

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

DataFrameの結合と列の追加

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

現地海面降水量(mm)気温(℃)露点温度(℃)蒸気圧(hPa)湿度(%)風速風向日照時間(h)全天日射量(MJ/㎡)降雪積雪天気雲量視程(km)loc
011011.61018.57.5-0.45.9573.8北西NaNNaNNaNNaNNaNnagoya
121012.31019.27.4-0.85.8564.8北西NaNNaNNaNNaNNaNnagoya
231012.61019.67.1-1.15.6564.3西北西NaNNaNNaN125.0nagoya
341013.11020.16.50.06.1633.1北西NaNNaNNaNNaNNaNnagoya
451013.81020.85.90.76.4693.2北西NaNNaNNaNNaNNaNnagoya

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

現地海面降水量(mm)気温(℃)露点温度(℃)蒸気圧(hPa)湿度(%)風速風向日照時間(h)全天日射量(MJ/㎡)降雪積雪天気雲量視程(km)loc
011016.91021.26.00.66.4682.7NaNNaNNaNNaN20.0matsuyama
121017.51021.84.80.26.2721.3北東NaNNaNNaNNaN20.0matsuyama
231017.51021.84.7-0.36.0700.9東北東NaNNaNNaNNaN20.0matsuyama
341017.51021.84.8-0.65.9681.4東北東NaNNaNNaNNaN20.0matsuyama
451018.21022.54.1-0.55.9720.8北東NaNNaNNaNNaN20.0matsuyama

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=[“–“, “:”]のようにリストで設定することで、グラフにスタイルが反映される。

参考

Plotting with categorical data — seaborn 0.10.1 documentation
python seaborn
サボテンパイソン

コメント