データ分析を行う際、可視化は重要な役割を果たします
Pythonでデータ分析を行う場合、seabornは非常に便利で美しいグラフを作成できる可視化ライブラリです
この記事では、seabornの基本的な使い方や上手い使い方を解説していきます
また、Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップを参照して、Pythonデータ分析全般について学ぶことができます
筆者について
2021年から本格的にPython学習を始め、今ではPythonによる収益化に成功
大学院時代には、R言語とPythonを使って統計処理を行っていたため、Pythonを使ったデータサイエンスの知識が豊富
医療データを機械学習を用いて解析したり、学会発表も行なっている
Contents
seabornとは
seabornは、Pythonでデータ可視化を行うためのライブラリで、matplotlibをベースに作られています
seabornは、統計的グラフィックスを簡単に描画できる機能が豊富に揃っており、データ分析において非常に便利です
seabornのインストール
seabornをインストールするには、以下のコマンドを実行します
pip install seaborn
Anacondaを使用している場合には、
conda install seaborn
データの可視化が重要な理由
データ分析において、データの可視化が重要な理由は以下の通りです
- データの理解: 可視化によって、データの傾向やパターンを直感的に把握しやすい。可視化により、データの構造や特徴を理解し、分析の方向性を決める上で役立ちます。
- 異常値の検出: グラフやチャートによって、データの分布を視覚的に確認できる。異常値や外れ値を発見し、データのクリーニングや前処理を行いやすくなります。
- 分析結果の検証: 分析結果をグラフやチャートで表現することで、分析が正しく行われているか、予測モデルが適切に機能しているかなどを検証しやすくなります。
- コミュニケーション: データ分析の結果を可視化することで、他のメンバーや関係者とのコミュニケーションが円滑になる。視覚的な情報は、言葉や数字だけでは伝わりにくいデータの傾向や関係性を効果的に伝えることが可能
- 意思決定の助け: 可視化によって、データをもとにした意思決定が容易になる。明確なグラフやチャートを提示することで、ビジネス上の問題解決や戦略立案に役立てることができます。
以上の理由から、データ分析においてデータの可視化は非常に重要な要素となります
可視化を行うことで、データの理解、分析結果の検証、コミュニケーションの向上、意思決定の助けとなり、効果的なデータ分析を実現することができます
seabornの基本的な使い方

seabornを使用する際には、まずseabornとmatplotlibをインポートします
sns.set()
はおまじないです
import seaborn as sns
import matplotlib.pyplot as plt
#おまじない
sns.set()
散布図 (Scatter plot)
seabornで散布図を描画するには、
sns.scatterplot()
関数を使用します
import seaborn as sns
import matplotlib.pyplot as plt
# データの準備
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 散布図の描画
sns.scatterplot(x=x, y=y)
# タイトルの追加
plt.title("Scatter Plot")
# グラフの表示
plt.show()
折れ線グラフ (Line plot)
折れ線グラフを描画するには、
sns.lineplot()
関数を使用します
import seaborn as sns
import matplotlib.pyplot as plt
# データの準備
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 折れ線グラフの描画
sns.lineplot(x=x, y=y)
# タイトルの追加
plt.title("Line Plot")
# グラフの表示
plt.show()
ヒストグラムとカーネル密度推定
ヒストグラムは、データの分布を視覚的に把握するのに便利なグラフです
seabornでは、sns.histplot()
関数を使ってヒストグラムを描画できます
また、kde
引数をTrue
に設定することで、カーネル密度推定も同時に表示できます
import seaborn as sns
import matplotlib.pyplot as plt
# データの準備
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
# ヒストグラムとカーネル密度推定の描画
sns.histplot(data, kde=True)
# タイトルの追加
plt.title("Histogram and Kernel Density Estimation")
# グラフの表示
plt.show()
箱ひげ図とバイオリン図
箱ひげ図は、データの分布や外れ値を視覚的に表現するグラフです
seabornでは、sns.boxplot()
関数を使って描画できます
バイオリン図は、箱ひげ図とカーネル密度推定を組み合わせたグラフで、sns.violinplot()
関数を使って描画できます
import seaborn as sns
import matplotlib.pyplot as plt
# データの準備
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
# 箱ひげ図の描画
sns.boxplot(data=data)
# タイトルの追加
plt.title("Box Plot")
# グラフの表示
plt.show()
# バイオリン図の描画
sns.violinplot(data=data)
# タイトルの追加
plt.title("Violin Plot")
# グラフの表示
plt.show()
ヒートマップ
ヒートマップは、二次元データの値を色で表現するグラフです
seabornでは、sns.heatmap()
関数を使ってヒートマップを描画できます
import seaborn as sns
import matplotlib.pyplot as plt
# データの準備
data = [
[1, 2, 3, 4, 5],
[2, 4, 6, 8, 10],
[3, 6, 9, 12, 15],
[4, 8, 12, 16, 20],
[5, 10, 15, 20, 25]
]
# ヒートマップの描画
sns.heatmap(data)
# タイトルの追加
plt.title("Heatmap")
#グラフの表示
plt.show()
クラスターマップ
クラスターマップは、ヒートマップに階層的クラスタリングを適用したグラフです
seabornでは、sns.clustermap()
関数を使ってクラスターマップを描画できます
import seaborn as sns
# データの準備
data = [
[1, 2, 3, 4, 5],
[2, 4, 6, 8, 10],
[3, 6, 9, 12, 15],
[4, 8, 12, 16, 20],
[5, 10, 15, 20, 25]
]
# クラスターマップの描画
sns.clustermap(data)
# グラフの表示
plt.show()
ペアプロット
ペアプロットは、データセット内の複数の変数間の関係を一度に視覚化するためのグラフです
seabornでは、sns.pairplot()
関数を使ってペアプロットを描画できます
import seaborn as sns
import pandas as pd
# データの準備
data = {
"A": [1, 2, 3, 4, 5],
"B": [2, 4, 6, 8, 10],
"C": [3, 6, 9, 12, 15],
"D": [4, 8, 12, 16, 20]
}
df = pd.DataFrame(data)
# ペアプロットの描画
sns.pairplot(df)
# グラフの表示
plt.show()
カテゴリカルデータの可視化
カテゴリカルデータを可視化するために、seabornでは
sns.barplot()
やsns.stripplot()
などの関数が用意されています
import seaborn as sns
import pandas as pd
# データの準備
data = {
"Category": ["A", "B", "C", "A", "B", "C", "A", "B", "C"],
"Value": [1, 2, 3, 4, 5, 6, 7, 8, 9]
}
df = pd.DataFrame(data)
# 棒グラフの描画
sns.barplot(x="Category", y="Value", data=df)
# タイトルの追加
plt.title("Bar Plot for Categorical Data")
# グラフの表示
plt.show()
# ストリッププロットの描画
sns.stripplot(x="Category", y="Value", data=df)
# タイトルの追加
plt.title("Strip Plot for Categorical Data")
# グラフの表示
plt.show()
FacetGridを使った複数のグラフ
FacetGridを使うことで、複数のグラフを同時に描画し、データの特徴を比較しやすくできます
seabornでは、sns.FacetGrid()
を使ってFacetGridオブジェクトを作成し、map()
メソッドでグラフを描画できます
import seaborn as sns
import pandas as pd
# データの準備
data = {
"Category": ["A", "A", "A", "B", "B", "B", "C", "C", "C"],
"X": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"Y": [9, 8, 7, 6, 5, 4, 3, 2, 1]
}
df = pd.DataFrame(data)
# FacetGridの作成
g = sns.FacetGrid(df, col="Category")
# 各グリッドに散布図を描画
g.map(sns.scatterplot, "X", "Y")
# タイトルの追加
g.fig.suptitle("Scatter Plots with FacetGrid", y=1.05)
# グラフの表示
plt.show()
seabornのカスタマイズ
seabornでは、グラフのカスタマイズや見た目の変更を行うために、さまざまなオプションが用意されています
ここからは、seabornのオプションについて解説をしていきます
カラーパレット
seabornでは、
set_palette()
関数を使ってグラフ全体のカラーパレットを設定できます
このオプションで、グラフの色を統一感のあるものにすることができます
import seaborn as sns
import matplotlib.pyplot as plt
# カラーパレットの設定
sns.set_palette("husl")
# サンプルデータの読み込み
tips = sns.load_dataset("tips")
# ヒストグラムの描画
sns.histplot(tips["total_bill"])
# グラフの表示
plt.show()
スタイル設定
seabornでは、
set_style()
関数を使ってグラフの背景やグリッド線などのスタイルを設定できます
デフォルトのスタイルは、”darkgrid”ですが、”whitegrid”, “dark”, “white”, “ticks” などが用意されています
import seaborn as sns
import matplotlib.pyplot as plt
# スタイルの設定
sns.set_style("whitegrid")
# サンプルデータの読み込み
tips = sns.load_dataset("tips")
# 散布図の描画
sns.scatterplot(x="total_bill", y="tip", data=tips)
# グラフの表示
plt.show()
グラフサイズ調整
グラフのサイズを調整する場合、Matplotlibの
figure()
関数を使って、幅と高さを指定できます
import seaborn as sns
import matplotlib.pyplot as plt
# サンプルデータの読み込み
tips = sns.load_dataset("tips")
# グラフサイズの調整
plt.figure(figsize=(10, 5))
# ヒストグラムの描画
sns.histplot(tips["total_bill"])
# グラフの表示
plt.show()
これらのオプションを活用することで、seabornのグラフをカスタマイズし、見た目を向上させることができます
他にも、seabornやMatplotlibには多くのオプションが用意されているため、必要に応じてドキュメントを参照しながら、グラフのカスタマイズを行ってください
seaborn: statistical data visualization
まとめ

この記事では、seabornの基本的な使い方や上手い使い方について解説しました
さらに詳しく学びたい方は、Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップを参照してください
また、記事の内容やサンプルコードを活用して、データ分析を行いながらseabornを使いこなしていくことが大切です
実装を重ねることで、よりスムーズにseabornを利用できるようになります
機械学習に興味がある方は、Pythonで機械学習を学んで実装してみようも参考にしてください