【超美しい】要約統計量を python + seabornでグラフ化しよう!

Python入門
この記事は約5分で読めます。

前回の記事では、matplotlib を使って、データの分布をグラフ化する方法を紹介しました。

今回紹介する seaborn というライブラリを使うと、matplotlib よりも視覚的に美しいグラフを描いたり、表形式データに対して簡単に総当たりの散布図を描くことが出来るようになります。

そこで、この記事では seaborn を使った 箱ひげ図、ヒストグラム、バィオリンプロットの描き方と、DataFrameに含まれるデータを使って総当たりで散布図を描く方法を解説したいと思います。

インストール方法

Anaconda で Python をインストールしている方は、import するだけで使えると思いますが、もし import エラーが出る場合、もしくは Python の公式サイトから直接 Python をインストールしている方は、あらかじめインストールしておいてください。

インストールが完了したら、次の様に import して下さい。

seaborn は matplitlib のラッパーであり、内部で matplotlib を使っていますので、必ず matplotlib も合わせて import して下さい。

matplitlib がインストールされていない場合は、こちらの記事を参考にインストールして下さい。

サンプルデータについて

各グラフを描くためのサンプルデータは下記のプログラムで作成しています。

箱ひげ図を描く

箱ひげ図は catplot メソッドを使います。

data 引数に描画データを、kind 引数に ‘box’ を指定します。

matplotlib の時はX軸に列名を表示するための指定が必要でしたが、searborn では特に設定せずともDataFrameの列名をX軸に表示してくれます。

実行したら下記のグラフが表示されます。

各箱に色がついているので、とっても見やすいですね。

ヒストグラムを描く

箱ひげ図は distplot メソッドを使います。

こちらは複数のヒストグラムが描けないので、1列づつ指定する必要があります。

下記の例は、列名が ‘col1’ のデータを表示するものです。

実行結果は以下の通りです。

特に指定しなくても、線グラフが同時に描画されます。

バィオリンプロットを描く

バィオリンプロットは violinplot メソッドを使います。

実行結果は次の通りです。

各バィオリンの背景色に色がついているのと、バィオリンの中に箱ひげが表示されていて、中央値、四分位も判断できるようになっています。

総当たりの散布図を描く

総当たりの散布図を描くには pairplot メソッドを使います。

今回は列が3つなので3×3=9個のグラフが表示されますが、下図が増えると表示までに結構な時間が掛かります。

フリーズしたんではないかと勘違いするかもしれませんが、そこは我慢して待ちましょう。

実行結果は以下の通りです。

散布図なので、対角線(縦、横が同じデータ)に位置するグラフはヒストグラムが表示されています。

グラフの見栄えを良くする

Seaborn でデザインを整えるには set 又は set_style メソッドを使います。

メソッドの引数には以下の5種類が指定できます。

引数の値背景色グリッド
darkgridグレー有り
darkグレー 無し
whitegrid有り
white無し
ticks軸のみグリッド有り

下記は実際の指定例です

実行結果は以下の通りです。

グラフによっては ‘white’と’ticks’が同じデザインになるようです。

少なくとも箱ひげの場合は同じ結果になったため、今回は割愛しました。

グラフのタイトルを表示する

グラフのタイトルを表示する方法はいくつかありますが、1つは sns.boxplot() から返される seaborn の axis オブジェクトを使う方法です。

このサンプルソースでは、sns.set() の引数に font=’Meiryo’ を指定して、タイトルが漢字の場合の文字化けを防いでいます。

記述の順番が重要で、sns.boxplot() の前に sns.set() を記述しないと設定が有効にならないのでご注意ください。

もう1つの方法は、matplotlib に対して設定する方法です。

下記はそのサンプルソースですが、 sns.set_style () の記述位置には注意が必要です。

pltでグラフタイトル、軸タイトルを設定した後で sns.set_style () を 設定しないと文字化けを起こしてしまいます。

くれぐれも順番にはご注意ください。

まとめ

今回は seaboarn を使った、箱ひげ図、ヒストグラム、バィオリンプロットの描き方と、総当たりの散布図の描き方について解説しました。

箱ひげ図、ヒストグラム、バィオリンプロット については、matplotlib を使った時よりも綺麗なグラフが簡単に描けるようになります。

また、総当たりの散布図については表形式のデータを与えるだけで良いので、大変便利です。

matplotlib に比べて知名度は低いですが、デザイン性は優れていますので、是非ご活用ください。

タイトルとURLをコピーしました