PythonのSeabornの使い方|折れ線グラフや棒グラフ、散布図の作り方等を解説

スポンサーリンク

Python Seabornモジュールは、データの可視化をより簡単に、より高い効率で実現するためのモジュールです。

巨大なデータセットのバリエーションを表現するために、「データの可視化」はデータを描写し分析する最良の方法と考えられています。

Seabornは、matplotlibよりも優れたデータ可視化のための関数群を持ち、最適化された効率的な方法でデータ可視化を行うことができます。

また、データセットを表現するためにNumPyとPandasのデータ構造をサポートしています。

しかし、Seabornモジュールを使い始めるには、Python matplotlibモジュールを理解することを強くお勧めします。

スポンサーリンク

Python を始める Seaborn

Seabornの機能を使い始めるには、以下のコマンドでモジュールを環境にインストールする必要があります。

pip install Seaborn

Seabornモジュールが円滑に動作するためには、以下のモジュールがインストールされている必要があります。

  • matplotlib
  • NumPy
  • Pandas
  • SciPy

参考までに、箇条書きで関連記事をリンクしておきます。


チュートリアルで使用するデータファイル

この記事では、CSV ファイルを使用します。

そこで、このセクションでは、このチュートリアルで使用するファイルについて説明します。

以下のファイル名への参照を見るたびに、このセクションを振り返って、渡されるデータを理解することができます

Book1.csv。

seaborn.scatterplot(x=value, y=value, data=data)

tips.csv。

import seaborn
import pandas
import matplotlib.pyplot as plt
 
csv = pandas.read_csv(r'C:Book1.csv')
res = seaborn.scatterplot(x="Name", y="Age", data=csv)
plt.show()

Python Seaborn による統計解析

統計解析とは、データセットに含まれるいくつかのパラメータを、大きく「推定」することです。

データの可視化は、統計解析を行うための最良の方法、すなわち、図式化された値に基づいて結果や原因を予測することであると考えることができます。

統計解析の際には、以下の方法のいずれかを考慮することができます

  • seaborn.scatterplot()を使用します。
  • seaborn.lineplot()を使用します。

1. seaborn.scatterplot()関数

seaborn.scatterplot() 関数は基本的に与えられた軸上のパラメータ間の関係をそれぞれ描写するために使われます。

グラフ上の各点は、それに対応する値を描きます。

構文は以下の様な感じです。

seabron.lineplot(x=value, y=value, data=data)

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv(r'C:Book1.csv')
res = seaborn.lineplot(x="Name", y="Age", data=csv)
plt.show()

上記の例では、データセットの内容を読み込むために read_csv() 関数を使用するために、Python Pandas モジュールをインポートしています。

名前」の列がX軸、「年齢」の列がY軸で表されている。

出力は以下の通りです。

seaborn.catplot(x=value, y=value, data=data)

2. seaborn.lineplot()関数


あるパラメータの依存関係を時間に対して連続的に調べる必要がある場合、 seaborn.lineplot() 関数を広く利用することができます。

構文は以下の通りです。

import seaborn
import pandas
import matplotlib.pyplot as plt
 
 
csv = seaborn.load_dataset("tips")
res = seaborn.catplot(x="tip", y="sex", data=csv)
 
plt.show()

例えば、以下の様になります。

seaborn.stripplot(x=value, y=value, data=data)

結果は以下の通りです。

import seaborn
import pandas
import matplotlib.pyplot as plt
 
 
csv = seaborn.load_dataset("tips")
res = seaborn.stripplot(x="tip", y="sex", data=csv,jitter=0.05)
 
plt.show()

カテゴリー別散布図

カテゴリデータは、元のデータのサブセットである離散的なグループの形で分割され、それ自身を表現します。

PythonのSeabornモジュールには、カテゴリデータを表現し、可視化するための以下のメソッドが含まれています。

  • seaborn.catplot()
  • seaborn.catplot()、* seaborn.stripplot()。
  • seaborn.swarmplot()

1. seaborn.catplot()関数

前述の seaborn.catplot() 関数は、数値とカテゴリ群の関係をまとめて分析する手法の一つです。

構文は以下の通り。

seaborn.swarmplot(x=value, y=value, data=data)

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
 
 
csv = seaborn.load_dataset("tips")
res = seaborn.swarmplot(x="tip", y="sex", data=csv)
 
plt.show()

結果は以下の通りです。

seaborn.violinplot(x=value, y=value, data=data)

2. seaborn.stripplot()

seaborn.stripplot()` 関数は、入力列の1つをカテゴリデータの入力とみなし、入力のデータ型が異なるにもかかわらず、それに従って順序的に点をプロットします。

構文は以下の様な感じです。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.violinplot(x=csv['Age'])
plt.show()

例えば、以下の様になります。

seaborn.boxplot(x=value, y=value, data=data)

パラメータ jitter は、データセットがオーバーラップするデータ点から構成されている場合に有効です。

そのような場合、ジッター値を設定することで、それらが均一に分布するようにすることができる。

結果は以下の通りです。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.boxplot(x=csv['Age'])
plt.show()

3. seaborn.swarmplot()関数

seaborn.swarmplot()関数はseaborn.stripplot()関数に似ていますが、若干の違いがあります。

seaborn.swarmplot()`関数は、選択したカテゴリ軸に沿ってデータ値をプロットします。

従って、重なりを完全に避けることができます。

構文は以下の通りです。

seaborn.boxenplot(x=value, y=value, data=data)

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.boxenplot(x=csv['Age'])
plt.show()

上記の例では、唯一のカテゴリーデータとして列 ‘sex’ を渡し、それぞれX軸に沿って同じようにプロットしています。

結果は以下の通りです。

seaborn.countplot(x=value, y=value, data=data)

カテゴリー分布プロット

カテゴリ分布データは基本的に、ランダム/選択変数が与えられた可能なカテゴリの1つに属する確かな可能性を結果が記述しているタイプのデータを指します。

Python Seabornはカテゴリ分布データを効率的に表現するために以下の関数を備えています。

  • seaborn.violinplot()(シーボーンバイオリンプロット
  • seaborn.boxplot()
  • seaborn.boxenplot()

1. seaborn.violinplot()

seaborn.violinplot()`関数は、データの基本的な分布を表現します。

この関数は、異なるカテゴリデータの入力に対するデータの分布を描画して表現します。

構文は以下の様な感じです。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.countplot(x=csv['Age'])
plt.show()

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.barplot(x=csv['Name'], y=csv['Age'])
plt.show()

上記の例では、列「年齢」に沿ったデータの分布をそれぞれ考えている。

結果は以下の通りです。

seaborn.pointplot(x=value, y=value, data=data)

2. seaborn.boxplot()関数

seaborn.boxplot()` 関数は、データのカテゴリ分布を表し、異なるカテゴリデータ入力間の比較を設定します。

box’ 構造はデータ入力の主要な四分位を表し、’line’ 構造はデータの分布の残りを表します。

外れ値は四分位点間関数を用いて点で表される。

構文は以下の様な感じです。

import seaborn
import pandas
import matplotlib.pyplot as plt
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.pointplot(x=csv['Name'], y=csv['Age'])
plt.show()

例えば、以下の様になります。

seaborn.set()

上記の例では、入力データセットとしてBook1.csvファイルを使用した。

このデータセットを分析すると、年齢12歳のデータが異常値であり、残りのデータは15-27歳の間であることがわかる。

これはseaborn.boxplot()関数でうまく表現されています。

出力してみましょう。

import seaborn
import pandas
import matplotlib.pyplot as plt
seaborn.set()
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.pointplot(x=csv['Name'], y=csv['Age'])
plt.show()

3. seaborn.boxenplot()関数

seaborn.boxenplot()` 関数は seaborn.boxplot() 関数とよく似ていますが、表現が少し異なります。

seaborn.boxenplot()関数は、カテゴリデータの分布を、大きな四分位が実際のデータ観測に対応する特徴を表すような形で表します。

これは、データの分布全体に関する詳細な情報を可視化した形でデータを提示するものです。

構文は以下の様な感じです。

seaborn.set_style("theme-name")

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
seaborn.set_style("dark")
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.pointplot(x=csv['Name'], y=csv['Age'])
plt.show()

下の出力を入力データセットと分析・比較すると、boxenplotは12-27のデータポイントの分布全体と、大きな四分位点-ボックス構造を持つカテゴリーデータの分布を表していることが明確に理解できるだろう。

結果は以下の通りです。

import seaborn
import pandas
import matplotlib.pyplot as plt
seaborn.set_style("whitegrid")
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.pointplot(x=csv['Name'], y=csv['Age'])
plt.show()

Categorical estimate plots

カテゴリデータの推定とは,基本的にカテゴリデータ値のある推定値や予測値を対応するデータ変数に表現することを指す.

Python Seabornにはカテゴリデータの推定に利用できる以下の関数があります。

  • seaborn.countplot()
  • seaborn.countplot()
  • seaborn.pointplot()(シーボーンポイントプロット

1. seaborn.countplot()

seaborn.countplot()`関数は、カテゴリ変数を推定してその頻度または数で表現するために使用される。

構文は以下の通り。

seaborn.FacetGird(data, col=value, col_wrap=value)

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
seaborn.set_style("whitegrid")
csv = pandas.read_csv("C:Book1.csv")
res = seaborn.FacetGrid(csv, col="Age", col_wrap=3)
res.map(seaborn.barplot, "Name", "Age")
plt.show()

結果は以下の通りです。

seaborn.distplot(data-column)

上の図から明らかなように、countplot()関数は基本的に入力データフィールドの頻度を数え、それをy軸に沿って表現し、データフィールド-‘年齢’はx軸に沿って表現されています。


2. seaborn.barplot()関数

seaborn.barplot() 関数は、基本的に推定されたデータをデータ表現の中心傾向の形で表現します。

例えば、以下の様になります。

import seaborn
import pandas
import matplotlib.pyplot as plt
seaborn.set_style("whitegrid")
csv = pandas.read_csv("C:Book1.csv")
res=seaborn.distplot(csv['Age'])
plt.show()

結果は以下の通りです。

seaborn.jointplot(x=variable1, y=variable2)

3. seaborn.pointplot()関数

seaborn.pointplot()` 関数は、散布点とそれらを結ぶ直線を用いて分布の中心傾向を推定することを表す。

構文は以下の様な感じです。

import seaborn
import pandas
import matplotlib.pyplot as plt
seaborn.set_style("darkgrid")
csv = pandas.read_csv("C:Book1.csv")
res=seaborn.jointplot(x=csv['Age'], y=csv['Age'])
plt.show()

例えば、以下の様になります。

Input csv file
Book1.csv

結果は以下の通りです。

Input Csv Tips
Input csv tips-data set

Seaborn のカスタマイズされたスタイルとテーマ

Python Seabornには、データをより良く、魅力的に可視化するための関数とテーマが組み込まれています。

seaborn.set() 関数は、出力される視覚化のデフォルトテーマ取得に使用されます。

構文は以下の様な感じです。

Python Seaborn-ScatterPlot
Seaborn ScatterPlot
Seaborn-LinePlot
Seaborn LinePlot

結果は以下の通りです。

Seaborn-catplot
catplot

Python Seabornでは、以下のようなテーマでデータの可視化を行っています。

  • ダニ
  • Whitegrid テーマ
  • Darkgrid テーマ
  • ダーク

構文は以下の様な感じです。

Seaborn-stripplot
stripplot

例: 1- ダークテーマの場合

Seaborn-swarmplot
swarmplot

結果は以下の通りです。

Seaborn-violinplot
Seaborn-violinplot

例: 2-「ホワイトグリッドのテーマ」(The whitegrid theme)

Seaborn-boxplot
Seaborn boxplot

結果を出力すると、以下の様になります。

Seaborn-boxenplot
Seaborn boxenplot

Seaborn のマルチプロットグリッド

カテゴリ値を持つ大規模なデータセットを正確に表現するために、データの部分集合の複数のプロットを描いて可視化することができる。

構文は以下の通り。

Seaborn-countplot
Seaborn countplot

例えば、以下の様になります。

Seaborn-barplot
Seaborn barplot

FacetGridクラスは、データのサブセットに対する複数のプロットでデータを広範囲に表現するために使用される。

以下のような次元で表現することができる。

  • col
  • 色相

パラメータ col_wrap は、基本的にグラフを表現するために必要な行数を表します。

FacetGrid.map()` 関数は、データのすべてのサブセットにプロット手法を適用するために使用されます。

結果は以下の通りです。

Seaborn-pointplot
Seaborn pointplot

Seaborn を使って一変量分布をプロットする

一変量分布とは、基本的に1つの確率変数/データ項目に関するデータの分布のことを指します。

Python Seaborn モジュールの seaborn.distplot() 関数は、データセットの一変量分布を表現するために使うことができます。

構文は以下の様な感じです。

Seaborn Style Using set()
Seaborn Style Using set()

例えば、以下の様になります。

Seaborn Dark Theme
Seaborn Dark Theme

結果は以下の通りです。

Seaborn Whitegrid Theme
Seaborn White grid Theme

Seaborn による二変量分布の描画

二変量分布とは、データセットの2つのデータ列または項目に関してデータを視覚化することを指します。

seaborn.jointplot()`は、2つのデータ変数の関係を描写するために使用することができる。

構文は以下の様な感じです。

Seaborn Multigrid
Seaborn Multigrid

例えば、以下の様になります。

Seaborn Distplot
Seaborn Distplot

上記の例では、データの可視化を表現するために、単純化するために両方の変数を「年齢」として使用しています。

結果は以下の通りです。

Seaborn jointplot
Seaborn jointplot

まとめ

このように、今回はPython Seabornが提供するデータの可視化のための基本的な機能を理解することができました。


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