Seaborn-quick-guide
シーボーン-はじめに
分析の世界では、洞察を得る最良の方法はデータを視覚化することです。 データは、理解、調査、把握しやすいプロットとして表現することで視覚化できます。 このようなデータは、重要な要素の注意を引くのに役立ちます。
Pythonを使用してデータセットを分析するには、広く実装されている2DプロットライブラリであるMatplotlibを使用します。 同様に、SeabornはPythonの視覚化ライブラリです。 Matplotlibの上に構築されています。
Seaborn Vs Matplotlib
Matplotlibが「簡単なことを簡単に、難しいことを可能にしようとすると」、Seabornは明確に定義された難しいものも簡単にしようとすることを要約しています。
Seabornは、Matplotlibが直面する2つの主要な問題の解決を支援します。問題は-
- デフォルトのMatplotlibパラメーター
- データフレームの使用
SeabornはMatplotlibを補完し、拡張するため、学習曲線は非常に緩やかです。 Matplotlibを知っていれば、すでにSeabornの途中にいます。
Seabornの重要な機能
Seabornは、PythonのコアビジュアライゼーションライブラリMatplotlibの上に構築されています。 これは、補完ではなく、代替として機能することを意図しています。 ただし、Seabornには非常に重要な機能がいくつか付属しています。 ここでそれらのいくつかを見てみましょう。 機能はで助けます-
- matplotlibグラフィックスをスタイリングするための組み込みテーマ
- 単変量および二変量データの視覚化
- 線形回帰モデルの適合と視覚化
- 統計的時系列データのプロット
- SeabornはNumPyおよびPandasのデータ構造とうまく機能します
- Matplotlibグラフィックスをスタイリングするためのテーマが組み込まれています
ほとんどの場合、単純なプロットには引き続きMatplotlibを使用します。 Seabornのデフォルトプロットを調整するには、Matplotlibの知識が推奨されます。
Seaborn-環境設定
この章では、Seabornの環境設定について説明します。 インストールから始めて、先に進むときに始める方法を理解しましょう。
Seabornのインストールと開始
このセクションでは、Seabornのインストールに必要な手順を理解します。
Pipインストーラーの使用
Seabornの最新リリースをインストールするには、pipを使用できます-
pip install seaborn
Anacondaを使用するWindows、Linux、およびMacの場合
Anaconda(https://www.anaconda.com/は、SciPyスタック用の無料のPythonディストリビューションです。 LinuxおよびMacでも利用可能です。
condaを使用してリリースバージョンをインストールすることも可能です-
conda install seaborn
Seabornの開発バージョンをgithubから直接インストールするには
https://github.com/mwaskom/seaborn "
依存関係
シーボーンの次の依存関係を考慮してください-
- Python 2.7または3.4+
- numpy
- シッピー
- パンダ
- matplotlib
Seaborn-データセットとライブラリのインポート
この章では、データセットとライブラリをインポートする方法について説明します。 ライブラリをインポートする方法を理解することから始めましょう。
ライブラリのインポート
まず、Pandasをインポートします。Pandasは、リレーショナル(テーブル形式)データセットを管理するための優れたライブラリです。 Seabornは、データ分析に最も広く使用されているデータ構造であるDataFrameを扱うときに便利です。
次のコマンドは、パンダをインポートするのに役立ちます-
# Pandas for managing datasets
import pandas as pd
次に、プロットのカスタマイズに役立つMatplotlibライブラリをインポートします。
# Matplotlib for additional customization
from matplotlib import pyplot as plt
私たちは次のコマンドでSeabornライブラリをインポートします-
# Seaborn for plotting and styling
import seaborn as sb
データセットのインポート
必要なライブラリをインポートしました。 このセクションでは、必要なデータセットをインポートする方法を理解します。
Seabornには、ライブラリにいくつかの重要なデータセットが付属しています。 Seabornがインストールされると、データセットが自動的にダウンロードされます。
これらのデータセットのいずれかを学習に使用できます。 次の機能を使用すると、必要なデータセットをロードできます
load_dataset()
Pandas DataFrameとしてのデータのインポート
このセクションでは、データセットをインポートします。 このデータセットは、デフォルトでPandas DataFrameとしてロードされます。 Pandas DataFrameに機能がある場合、このDataFrameで機能します。
次のコード行は、データセットのインポートに役立ちます-
# Seaborn for plotting and styling
import seaborn as sb
df = sb.load_dataset('tips')
print df.head()
上記のコード行は、次の出力を生成します-
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
Seabornライブラリで利用可能なすべてのデータセットを表示するには、以下に示すように、* get_dataset_names()*関数を使用して次のコマンドを使用できます-
import seaborn as sb
print sb.get_dataset_names()
上記のコード行は、次の出力として利用可能なデータセットのリストを返します
[u'anscombe', u'attention', u'brain_networks', u'car_crashes', u'dots',
u'exercise', u'flights', u'fmri', u'gammas', u'iris', u'planets', u'tips',
u'titanic']
*DataFrames* は、データを簡単にオーバービューできる長方形のグリッドの形式でデータを保存します。 長方形のグリッドの各行にはインスタンスの値が含まれ、グリッドの各列は特定の変数のデータを保持するベクトルです。 これは、DataFrameの行に同じデータ型の値を含める必要はなく、数値、文字、論理などであることを意味します。 DataFrames for PythonにはPandasライブラリが付属しており、潜在的に異なるタイプの列を持つ2次元のラベル付きデータ構造として定義されています。
DataFramesの詳細については、pandasのリンク:/python_pandas/index [tutorial]にアクセスしてください。
シーボーン-フィギュア美学
データの視覚化は1つのステップであり、視覚化されたデータをさらに楽しいものにすることは別のステップです。 視覚化は、視聴者に定量的な洞察を伝え、視聴者の注意を引くうえで重要な役割を果たします。
美学とは、特に芸術において、美の性質と評価に関する一連の原則を意味します。 視覚化は、効果的で最も簡単な方法でデータを表現する技術です。
Matplotlibライブラリはカスタマイズを高度にサポートしていますが、魅力的で予想されるプロットを実現するために調整する設定を知ることは、それを利用するために知っておくべきことです。 Matplotlibとは異なり、Seabornには、カスタマイズされたテーマと、Matplotlibの図の外観をカスタマイズおよび制御するための高レベルインターフェイスが満載されています。
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i *.5)* (7 - i) * flip)
sinplot()
plt.show()
これは、プロットがデフォルトのMatplotlibでどのように見えるかです-
同じプロットをSeabornのデフォルトに変更するには、* set()*関数を使用します-
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i *.5)* (7 - i) * flip)
import seaborn as sb
sb.set()
sinplot()
plt.show()
出力
上記の2つの図は、デフォルトのMatplotlibプロットとSeabornプロットの違いを示しています。 データの表現は同じですが、表現スタイルは両方で異なります。
基本的に、SeabornはMatplotlibパラメーターを2つのグループに分割します。
- 印刷スタイル
- プロットスケール
シーボーンフィギュアスタイル
スタイルを操作するためのインターフェースは* set_style()*です。 この関数を使用して、プロットのテーマを設定できます。 最新の更新バージョンごとに、利用可能な5つのテーマを以下に示します。
- ダークグリッド
- ホワイトグリッド
- Dark
- 白
- 目盛り
上記のリストからテーマを適用してみましょう。 プロットのデフォルトテーマは、前の例で見た darkgrid です。
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i *.5)* (7 - i) * flip)
import seaborn as sb
sb.set_style("whitegrid")
sinplot()
plt.show()
出力
上記の2つのプロットの違いは背景色です
軸スパインの削除
白とティックのテーマでは、* despine()*関数を使用して、上部および右側の軸スパインを削除できます。
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i *.5)* (7 - i) *flip)
import seaborn as sb
sb.set_style("white")
sinplot()
sb.despine()
plt.show()
出力
通常のプロットでは、左軸と下軸のみを使用します。* despine()*関数を使用すると、不必要な右軸と上軸のスパインを回避できますが、これはMatplotlibではサポートされていません。
要素をオーバーライドする
Seabornスタイルをカスタマイズする場合は、パラメーターの辞書を* set_style()関数に渡すことができます。 使用可能なパラメーターは、 axes_style()*関数を使用して表示されます。
例
import seaborn as sb
print sb.axes_style
出力
{'axes.axisbelow' : False,
'axes.edgecolor' : 'white',
'axes.facecolor' : '#EAEAF2',
'axes.grid' : True,
'axes.labelcolor' : '.15',
'axes.linewidth' : 0.0,
'figure.facecolor' : 'white',
'font.family' : [u'sans-serif'],
'font.sans-serif' : [u'Arial', u'Liberation
Sans', u'Bitstream Vera Sans', u'sans-serif'],
'grid.color' : 'white',
'grid.linestyle' : u'-',
'image.cmap' : u'Greys',
'legend.frameon' : False,
'legend.numpoints' : 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': u'round',
'text.color' : '.15',
'xtick.color' : '.15',
'xtick.direction' : u'out',
'xtick.major.size' : 0.0,
'xtick.minor.size' : 0.0,
'ytick.color' : '.15',
'ytick.direction' : u'out',
'ytick.major.size' : 0.0,
'ytick.minor.size' : 0.0}
パラメータの値を変更すると、印刷スタイルが変更されます。
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i *.5)* (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()
出力
プロット要素のスケーリング
また、プロット要素を制御し、* set_context()*関数を使用してプロットのスケールを制御できます。 コンテキストの4つのプリセットテンプレートがあり、相対的なサイズに基づいて、コンテキストの名前は次のとおりです。
- 紙
- ノート
- Talk *ポスター
デフォルトでは、コンテキストはノートブックに設定されています。上記のプロットで使用されました。
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i* .5) *(7 - i)* flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()
出力
実際のプロットの出力サイズは、上記のプロットと比較するとサイズが大きくなります。
注-Webページ上の画像のスケーリングにより、サンプルプロットの実際の違いを見逃す可能性があります。
シーボーン-カラーパレット
色は、視覚化の他の側面よりも重要な役割を果たします。 効果的に使用すると、色はプロットにさらに価値を加えます。 パレットとは、画家が絵具を並べて混ぜる平らな表面を意味します。
建物のカラーパレット
Seabornは、* color_palette()*と呼ばれる関数を提供します。これを使用して、プロットに色を付けたり、より美的な価値を追加したりできます。
使用法
seaborn.color_palette(palette = None, n_colors = None, desat = None)
パラメータ
次の表は、カラーパレットを構築するためのパラメータを示しています-
Sr.No. | Palatte & Description |
---|---|
1 |
n_colors パレットの色の数。 Noneの場合、デフォルトはパレットの指定方法に依存します。 デフォルトでは、 n_colors の値は6色です。 |
2 |
desat 各色の彩度を下げる割合。 |
戻る
ReturnはRGBタプルのリストを参照します。 以下は、すぐに利用可能なSeabornパレットです-
- Deep
- ミュート
- 明るい
- パステル
- Dark
- 色覚異常
これらに加えて、新しいパレットを生成することもできます
データの特性を知らずに、特定のデータセットに使用するパレットを決定するのは困難です。 それに注意して、私たちは* color_palette()*タイプを使用するためのさまざまな方法を分類します-
- 定性
- シーケンシャル
- 発散
カラーパレットを処理する別の関数* seaborn.palplot()*があります。 この関数は、カラーパレットを水平配列としてプロットします。 * seaborn.palplot()*に関する詳細は、今後の例で説明します。
定性的カラーパレット
質的またはカテゴリーパレットは、カテゴリーデータをプロットするのに最適です。
例
from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(current_palette)
plt.show()
出力
*color_palette();* にパラメーターを渡していないため、デフォルトでは6色が表示されています。 *n_colors* パラメーターに値を渡すことで、希望の色数を確認できます。 ここでは、* palplot()*を使用して、色の配列を水平にプロットします。
シーケンシャルカラーパレット
順次プロットは、範囲内の比較的低い値から高い値までのデータの分布を表すのに適しています。
追加の文字「s」を色パラメーターに渡された色に追加すると、順次プロットがプロットされます。
例
from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(sb.color_palette("Greens"))
plt.show()
注-上記の例では、「Greens」などのパラメータに「s」を追加する必要があります。
発散するカラーパレット
分岐パレットは、2つの異なる色を使用します。 各色は、共通点から両方向の値の変動を表します。
-1〜1の範囲のデータをプロットすると仮定します。 -1〜0の値は1つの色を取り、0〜+1は別の色を取ります。
デフォルトでは、値はゼロから中央に配置されます。 値を渡すことで、パラメータセンターで制御できます。
例
from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(sb.color_palette("BrBG", 7))
plt.show()
出力
デフォルトのカラーパレットの設定
関数* color_palette()には、 set_palette()と呼ばれるコンパニオンがあります。それらの関係は、美学の章で説明したペアに似ています。 引数は set_palette()と color_palette()*の両方で同じですが、デフォルトのMatplotlibパラメーターが変更され、すべてのプロットにパレットが使用されます。
例
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i *.5)* (7 - i) * flip)
import seaborn as sb
sb.set_style("white")
sb.set_palette("husl")
sinplot()
plt.show()
出力
単変量分布のプロット
データの分布は、データの分析中に理解する必要がある最も重要なことです。 ここでは、シーボーンがデータの単変量分布の理解にどのように役立つかを見ていきます。
関数* distplot()*は、単変量分布をすばやく確認する最も便利な方法を提供します。 この関数は、データのカーネル密度推定に適合するヒストグラムをプロットします。
使用法
seaborn.distplot()
パラメーター
次の表は、パラメータとその説明を示しています-
Sr.No. | Parameter & Description |
---|---|
1 |
data シリーズ、1D配列またはリスト |
2 |
bins 履歴ビンの指定 |
3 |
hist bool |
4 |
kde bool |
これらは、調べるべき基本的かつ重要なパラメーターです。
シーボーン-ヒストグラム
ヒストグラムは、データの範囲に沿ってビンを形成し、各ビンに含まれる観測値の数を示すバーを描画することにより、データ分布を表します。
Seabornにはいくつかのデータセットが付属しており、前の章ではほとんどデータセットを使用していません。 データセットをロードする方法と、使用可能なデータセットのリストを検索する方法を学びました。
Seabornにはいくつかのデータセットが付属しており、前の章ではほとんどデータセットを使用していません。 データセットをロードする方法と、使用可能なデータセットのリストを検索する方法を学びました。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'],kde = False)
plt.show()
出力
ここでは、 kde フラグがFalseに設定されています。 その結果、カーネル推定プロットの表現は削除され、ヒストグラムのみがプロットされます。
Seaborn-カーネル密度の推定
カーネル密度推定(KDE)は、連続確率変数の確率密度関数を推定する方法です。 ノンパラメトリック分析に使用されます。
*distplot* で *hist* フラグをFalseに設定すると、カーネル密度推定プロットが生成されます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'],hist=False)
plt.show()
出力
パラメトリック分布のあてはめ
- distplot()*は、データセットのパラメトリック分布を視覚化するために使用されます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'])
plt.show()
出力
二変量分布のプロット
2変量分布は、2つの変数間の関係を決定するために使用されます。 これは主に2つの変数間の関係と、1つの変数が他の変数に対してどのように動作するかを扱います。
seabornの二変量分布を分析する最良の方法は、* jointplot()*関数を使用することです。
Jointplotは、2つの変数間の2変量関係を予測するマルチパネルの図を作成し、各変数の単変量分布も別々の軸に投影します。
散布図
散布図は、各観測がx軸とy軸を介して2次元プロットで表される分布を視覚化する最も便利な方法です。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df)
plt.show()
出力
上の図は、Irisデータの petal_length と petal_width の関係を示しています。 プロットの傾向は、調査中の変数間に正の相関があることを示しています。
六角形プロット
六角形のビニングは、データが密度がまばらな場合、つまり、データが非常に散在しており、散布図で分析するのが難しい場合、二変量データ分析で使用されます。
「kind」と値「hex」と呼ばれる追加パラメーターは、hexbinプロットをプロットします。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df,kind = 'hex')
plt.show()
カーネル密度推定
カーネル密度の推定は、変数の分布を推定するノンパラメトリックな方法です。 seabornでは、* jointplot()。*を使用してkdeをプロットできます。
カーネルプロットをプロットするには、パラメーターの種類に値「kde」を渡します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df,kind = 'hex')
plt.show()
出力
Seaborn-ペアワイズ関係の視覚化
リアルタイム調査中のデータセットには多くの変数が含まれています。 このような場合、各変数間の関係を分析する必要があります。 (n、2)の組み合わせの2変量分布のプロットは、非常に複雑で時間がかかるプロセスになります。
データセットに複数のペアワイズ二変量分布をプロットするには、* pairplot()*関数を使用できます。 これは、プロットの行列としてのDataFrame内の変数の(n、2)の組み合わせの関係を示し、対角線プロットは単変量プロットです。
Axes
このセクションでは、Axesとは何か、その使用法、パラメーターなどを学習します。
使用法
seaborn.pairplot(data,…)
パラメーター
次の表は、軸のパラメータを示しています-
Sr.No. | Parameter & Description |
---|---|
1 |
data データフレーム |
2 |
hue プロットのアスペクトを異なる色にマッピングするためのデータの変数。 |
3 |
palette 色相変数をマッピングするための色のセット |
4 |
kind 非同一関係のプロットの種類。 \ {'scatter'、 'reg'} |
5 |
diag_kind 対角サブプロットのプロットの種類。 \ {「hist」、「kde」} |
データを除き、他のすべてのパラメーターはオプションです。 pairplot が受け入れることができる他のパラメーターはほとんどありません。 上記のパラメーターはよく使用されます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.set_style("ticks")
sb.pairplot(df,hue = 'species',diag_kind = "kde",kind = "scatter",palette = "husl")
plt.show()
出力
各プロットの変動を観察できます。 プロットは行列形式で、行名はx軸を表し、列名はy軸を表します。
対角線プロットはカーネル密度プロットであり、他のプロットは前述の散布図です。
Seaborn-カテゴリーデータのプロット
前の章では、調査中の連続変数の分析に使用される散布図、hexbinプロット、kdeプロットについて学びました。 これらのプロットは、調査中の変数がカテゴリカルである場合には適していません。
検討中の変数の一方または両方がカテゴリカルである場合、striplot()、swarmplot()などのプロットを使用します。 Seabornは、そうするためのインターフェイスを提供します。
カテゴリー散布図
このセクションでは、カテゴリー散布図について学習します。
stripplot()
stripplot()は、調査中の変数の1つがカテゴリカルである場合に使用されます。 軸のいずれか1つに沿ってソートされた順序でデータを表します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.stripplot(x = "species", y = "petal_length", data = df)
plt.show()
出力
上記のプロットでは、各種の petal_length の違いを明確に見ることができます。 ただし、上記の散布図の主な問題は、散布図上の点が重なっていることです。 「ジッタ」パラメータを使用して、この種のシナリオを処理します。
ジッタは、データにランダムノイズを追加します。 このパラメーターは、カテゴリー軸に沿って位置を調整します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.stripplot(x = "species", y = "petal_length", data = df, jitter = Ture)
plt.show()
出力
これで、ポイントの分布を簡単に確認できます。
Swarmplot()
「ジッタ」の代替として使用できる別のオプションは、関数* swarmplot()*です。 この関数は、散布図の各ポイントをカテゴリ軸上に配置し、それによってポイントの重複を回避します-
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()
出力
Seaborn-観測値の分布
前の章で扱ったカテゴリ散布図では、アプローチは各カテゴリ内の値の分布について提供できる情報が制限されます。 さて、さらに進んで、カテゴリ内との比較を実行する際に何が促進されるかを見てみましょう。
箱ひげ図
*Boxplot* は、四分位数によるデータの分布を視覚化する便利な方法です。
ボックスプロットには、通常、ウィスカーと呼ばれるボックスから伸びる垂直線があります。 これらのひげは、上四分位と下四分位以外の変動を示しているため、箱ひげ図は「箱ひげ図」および「箱ひげ図」とも呼ばれます。 データ内の外れ値は、個々のポイントとしてプロットされます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()
出力
プロット上の点は外れ値を示します。
バイオリンのプロット
バイオリンプロットは、ボックスプロットとカーネル密度の推定値の組み合わせです。 そのため、これらのプロットは、データの分布を分析および理解するのが簡単です。
バイオリンプロットの詳細を学ぶために呼び出されるヒントデータセットを使用してみましょう。 このデータセットには、レストランの顧客から提供されたヒントに関連する情報が含まれています。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill", data=df)
plt.show()
出力
箱ひげ図の四分位数とひげの値は、バイオリンの内側に表示されます。 バイオリンプロットはKDEを使用しているため、バイオリンの広い部分は密度が高く、狭い領域は比較的低い密度であることを示しています。 ボックスプロットの四分位範囲とkdeの高密度部分は、バイオリンプロットの各カテゴリの同じ領域に分類されます。
上記のプロットは、週4日のtotal_billの分布を示しています。 しかし、それに加えて、性別に関して分布がどのように動作するかを確認したい場合は、以下の例で調べてみましょう。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill",hue = 'sex', data = df)
plt.show()
出力
これで、男性と女性の間の支出行動を明確に見ることができます。 プロットを見ると、男性は女性よりも請求額が多いと簡単に言うことができます。
また、色相変数のクラスが2つしかない場合、特定の日に各バイオリンを2つのバイオリンではなく2つに分割することで、プロットを美しくすることができます。 バイオリンのどちらの部分も、hue変数の各クラスを参照します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y="total_bill",hue = 'sex', data = df)
plt.show()
出力
シーボーン-統計的推定
ほとんどの状況では、データの分布全体の推定を扱います。 しかし、中心傾向の推定に関しては、分布を要約する特定の方法が必要です。 平均と中央値は、分布の中心傾向を推定するために非常に頻繁に使用される手法です。
上記のセクションで学んだすべてのプロットで、分布全体の視覚化を行いました。 次に、分布の中心傾向を推定できるプロットについて説明します。
バープロット
- barplot()*は、カテゴリ変数と連続変数の関係を示します。 データは長方形のバーで表され、バーの長さはそのカテゴリのデータの割合を表します。
棒グラフは、中心傾向の推定値を表します。 「タイタニック」データセットを使用して棒グラフを学習しましょう。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.barplot(x = "sex", y = "survived", hue = "class", data = df)
plt.show()
出力
上記の例では、各クラスの男性と女性の平均生存数がわかります。 このプロットから、男性よりも多くの女性が生き残ったことがわかります。 男性と女性の両方で、より多くの生存者がファーストクラスからのものです。
barplotの特殊なケースは、2番目の変数の統計を計算するのではなく、各カテゴリの観測数を表示することです。 このために、* countplot()。*を使用します
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.countplot(x = " class ", data = df, palette = "Blues");
plt.show()
出力
プロットによると、3番目のクラスの乗客の数は、1番目と2番目のクラスよりも多くなっています。
点プロット
ポイントプロットはバープロットと同じように機能しますが、スタイルが異なります。 バー全体ではなく、推定値は他の軸上の特定の高さのポイントで表されます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.pointplot(x = "sex", y = "survived", hue = "class", data = df)
plt.show()
出力
Seaborn-ワイドフォームデータのプロット
「long-from」または「tidy」データセットを使用することは常に推奨されます。 しかし、「ワイドフォーム」データセットを使用するのではなく、オプションがない場合には、パンダデータフレームや2次元NumPyを含むさまざまな形式の「ワイドフォーム」データにも同じ機能を適用できます。配列。 これらのオブジェクトはデータパラメータに直接渡される必要があり、x変数とy変数は文字列として指定する必要があります
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.boxplot(data = df, orient = "h")
plt.show()
出力
さらに、これらの関数は、DataFrameの変数ではなく、PandasまたはNumPyオブジェクトのベクトルを受け入れます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.boxplot(data = df, orient = "h")
plt.show()
出力
Pythonの世界の多くの開発者にSeabornを使用する主な利点は、pandas DataFrameオブジェクトをパラメーターとして使用できることです。
Seaborn-マルチパネルカテゴリプロット
カテゴリデータは、2つのプロットを使用して視覚化できます。関数* pointplot()、または高レベル関数 factorplot()*を使用できます。
因子プロット
Factorplotは、FacetGridにカテゴリプロットを描画します。 「kind」パラメータを使用して、boxplot、violinplot、barplot、stripplotなどのプロットを選択できます。 FacetGridはデフォルトでポイントプロットを使用します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = pulse", hue = "kind",data = df);
plt.show()
出力
*kind* パラメーターを使用して、異なるプロットを使用して同じデータを視覚化できます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin',data = df);
plt.show()
出力
factorplotでは、データはファセットグリッドにプロットされます。
Facet Gridとは何ですか?
- ファセットグリッド*は、変数を分割して行と列で定義されるパネルのマトリックスを形成します。 パネルにより、単一のプロットは複数のプロットのように見えます。 2つの離散変数のすべての組み合わせを分析すると非常に役立ちます。
上記の定義を例で視覚化しましょう
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin', col = "diet", data = df);
plt.show()
出力
ファセットを使用する利点は、別の変数をプロットに入力できることです。 上記のプロットは、「col」パラメーターを使用して「diet」と呼ばれる3番目の変数に基づいて2つのプロットに分割されます。
私たちは多くの列ファセットを作成し、それらをグリッドの行に揃えることができます-
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.factorplot("alive", col = "deck", col_wrap = 3,data = df[df.deck.notnull()],kind = "count")
plt.show()
出力
シーボーン-線形関係
ほとんどの場合、複数の量的変数を含むデータセットを使用しますが、分析の目的は多くの場合、これらの変数を相互に関連付けることです。 これは回帰線を介して行うことができます。
回帰モデルの構築中に、*多重共線性*をチェックすることがよくあります。連続変数のすべての組み合わせ間の相関を確認する必要があり、多重共線性が存在する場合は削除するために必要なアクションを実行します。 このような場合、次の手法が役立ちます。
線形回帰モデルを描く関数
Seabornには、回帰によって決定された線形関係を視覚化する2つの主要な機能があります。 これらの関数は、* regplot()および lmplot()*です。
regplot vs lmplot
regplot | lmplot |
---|---|
accepts the x and y variables in a variety of formats including simple numpy arrays, pandas Series objects, or as references to variables in a pandas DataFrame | has data as a required parameter and the x and y variables must be specified as strings. This data format is called “long-form” data |
プロットを描きましょう。
例
この例の同じデータを使用して、regplotをプロットしてからlmplotをプロットします。
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()
出力
2つのプロットのサイズの違いを確認できます。
変数の1つが離散値を取る場合、線形回帰を近似することもできます
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()
出力
さまざまな種類のモデルの適合
上記で使用した単純な線形回帰モデルは非常に簡単に適合できますが、ほとんどの場合、データは非線形であり、上記の方法では回帰直線を一般化できません。
Anscombeのデータセットを回帰プロットで使用してみましょう-
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()
この場合、データは分散の少ない線形回帰モデルに適しています。
データの偏差が大きく、最適なラインが良くないことを示す別の例を見てみましょう。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()
出力
プロットは、回帰線からのデータポイントの高い偏差を示しています。 このような非線形の高次は、* lmplot()および regplot()*を使用して視覚化できます。これらは、データセットの単純な種類の非線形傾向を調べるために多項式回帰モデルに適合できます-
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()
出力
Seaborn-ファセットグリッド
中次元データを探索する便利なアプローチは、データセットの異なるサブセットに同じプロットの複数のインスタンスを描画することです。
この手法は一般に「格子」または「トレリス」プロットと呼ばれ、「小さな倍数」の概念に関連しています。
これらの機能を使用するには、データがPandas DataFrameに含まれている必要があります。
データサブセットの小さな倍数のプロット
前の章で、FacetGridクラスが1つの変数の分布と、複数のパネルを使用してデータセットのサブセット内の複数の変数間の関係を視覚化するのに役立つFacetGridの例を見てきました。
FacetGridは、行、列、色相の3次元まで描画できます。 最初の2つは、結果の軸の配列と明らかに対応しています。色相変数は、深さ軸に沿った3番目の次元と考えてください。ここでは、異なるレベルが異なる色でプロットされます。
*FacetGrid* オブジェクトは、入力としてデータフレームを受け取り、グリッドの行、列、または色相の次元を形成する変数の名前を受け取ります。
変数はカテゴリである必要があり、変数の各レベルのデータはその軸に沿ったファセットに使用されます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
plt.show()
出力
上記の例では、何も描画しない facetgrid オブジェクトを初期化したばかりです。
このグリッドのデータを視覚化する主なアプローチは、* FacetGrid.map()*メソッドを使用することです。 ヒストグラムを使用して、これらの各サブセットのヒントの分布を見てみましょう。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
g.map(plt.hist, "tip")
plt.show()
出力
パラメーターcolのため、プロットの数は複数です。 前の章でcolパラメーターについて説明しました。
リレーショナルプロットを作成するには、複数の変数名を渡します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "sex", hue = "smoker")
g.map(plt.scatter, "total_bill", "tip")
plt.show()
出力
シーボーン-ペアグリッド
PairGridでは、同じプロットタイプを使用してサブプロットのグリッドを描画し、データを視覚化できます。
FacetGridとは異なり、サブプロットごとに異なるペアの変数を使用します。 サブプロットの行列を形成します。 「散布図行列」とも呼ばれます。
pairgridの使用法は、facetgridに似ています。 最初にグリッドを初期化してから、プロット関数を渡します。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map(plt.scatter);
plt.show()
対角線上に異なる関数をプロットして、各列の変数の単変量分布を示すこともできます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter);
plt.show()
出力
別のカテゴリ変数を使用して、これらのプロットの色をカスタマイズできます。 たとえば、アイリスデータセットには3種類のアイリスの花のそれぞれについて4つの測定値があるため、それらがどのように異なるかを確認できます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter);
plt.show()
出力
上三角と下三角で異なる関数を使用して、関係の異なる側面を見ることができます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_upper(plt.scatter)
g.map_lower(sb.kdeplot, cmap = "Blues_d")
g.map_diag(sb.kdeplot, lw = 3, legend = False);
plt.show()