Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第16回】Seabornを用いたグラフの作成

はじめに

seabornは、matplotlibに基づくPythonデータ視覚化ライブラリです。 魅力的で有益な統計グラフィックスを描画するための高レベルのインターフェイスを提供します。

matplotlibと比較して、より手軽に美しく可視化ができるライブラリとなっています。

本記事では、Seabornを用いたグラフの描画方法を確認していきます。具体的には、折れ線グラフ、散布図、散布図+回帰線、ヒストグラム、散布図+ヒストグラム、箱ひげ図、バイオリンプロット、棒グラフ、ヒートマップの描画方法を説明します。

SAMURAI TERAKOYA

 

1. 折れ線グラフ(sns.lineplot)

折れ線グラフを描画するには、sns.lineplotを用います。まずseabornには学習用のデータセットが用意されているので、そのデータを取得してグラフ化していきます。学習用のデータセットについてはこちらの記事を参考にしてください。

sns.load_datasetでデータセットを取得します。取得したデータはDataFrame型となっています。今回はflightを用います。まずはそのデータの中身を確認します。データの中身は年、月、乗客数のデータが格納されています。

 

次にsns.lineplotを用いて折れ線グラフを描画します。これは各年の平均乗客数の折れ線グラフになっています。つまり、sns.lineplotでは平均値の折れ線グラフを描画することができます。

さて、上記のコードでci=Noneを設定していました。このciでは信頼区間標準偏差を設定することができます。ciには95、99、'sd'を指定することができ、それぞれ95%信頼区間、99%信頼区間標準偏差を表しています。以下の例ではci=95を指定した際のグラフになります。

次に、月別に折れ線を描画する方法を示します。以下の例では、sns.lineplotの引数にhueを設定します。hueにラベルを設定することで、ラベルごとにデータを示すことができます。月別に折れ線を描画するにはhueにmonthを指定することで月(ラベル)ごとの折れ線グラフを描画することができます。

 

2. 散布図(sns.scatterplot)

散布図を描画するにはsns.scatterplotを用います。

 

ラベルごとに描画したい場合にはhueでラベルを設定します。

 

3. 散布図と回帰線(sns.lmplot)

散布図と回帰線を示したグラフを描画するにはsns.lmplotを用います。この描画方法では回帰線が描画され、さらにデフォルトで95%信頼区間が描画されます。

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。

4. ヒストグラムsns.displot)

ヒストグラムを描画するにはsns.displotを用います。

 

棒の幅を変更するには、binwidthを引数に設定します。

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。下記の例では性別ラベルで分けています。重なり合っている部分はグレーになっています。

上記のグラフでは、ラベルごとのデータが重なり合っていましが、以下の例では積み上げで表示させています。積み上げの際には、引数にmultiple='stack'を設定します。

次は積み上げではなく、ラベルごとのデータを横に並べて表示させる方法を示します。ラベルごとのデータを横に並べるには引数にmultiple='dodge'を設定します。

 

5. 散布図とヒストグラムsns.jointplot)

散布図とヒストグラムを描画するには、sns.jointplotを用います。2つのパラメータの散布図とそれぞれのヒストグラムが描画されます。

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。以下の例ではhueにtimeを設定しています。

 

6. 散布図とヒストグラムsns.pairplot)

散布図とヒストグラムを描画するにはsns.pairplotを用います。sns.pairplotでは数値の列のみを用いて散布図およびヒストグラムを描画します。2つのパラメータの組み合わせ部分では散布図、1つのパラメータではヒストグラムを描画します。

 

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。以下の例ではhueにsexを指定し、性別ごとのデータを示しています。

 

7. 箱ひげ図(sns.boxplot)

箱ひげ図の描画にはsns.boxplotを用います。

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。

 

8. バイオリンプロット(sns.violinplot)

バイオリンプロットの描画にはsns.violinplotを用います。

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。

 

9. 棒グラフ(sns.barplot)

棒グラフを描画するには、sns.barplotを用います。

 

ラベルごとに描画したい場合には、上記同様にhueでラベルを指定します。以下の例ではhueにaliveを指定して、生存の有無のラベルごとにデータを表示しています。

 

10. ヒートマップ(sns.heatmap)

ヒートマップを描画するにはsns.heatmapを用います。以下の例では、df.pivotで行に月、列に年のデータ形式に変換してからヒートマップの描画をしています。

ヒートマップ上にデータの値を表示するには以下の例のようにannotとfmtを引数に指定します。

 

各マスの間に空間を持たせるには引数にlinewidthsを設定します。

 

カラーマップの色合いを変更するには引数にcmapを指定します。cmapの指定項目はこちらの記事が参考になります。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、Seabornを用いたグラフの描画方法を確認しました。具体的には、折れ線グラフ、散布図、散布図+回帰線、ヒストグラム、散布図+ヒストグラム、箱ひげ図、バイオリンプロット、棒グラフ、ヒートマップの描画方法を説明しました。基本的にはmatplotを用いてグラフを描画しても良いですが、オシャレにきれいなグラフを描画させたい場合や特殊なグラフを描画したい場合にはseabornを活用していきましょう!