Python Pandas入門:Seabornで箱ひげ図の上にスウォームプロット(観測値の群れ)を重ねて描画する方法
データ分析において、分布の全体像を把握しながら個々のデータポイントも確認したい場面は多くあります。Seabornのスウォームプロット(Swarm Plot)は、点同士が重ならないように配置されたカテゴリ別散布図を描画する機能で、seaborn.swarmplot()を使用して実現できます。
本記事では、seaborn.boxplot()で描いた箱ひげ図の上に、このスウォームプロットを重ねて表示する方法を解説します。箱ひげ図だけでは見えない外れ値やデータの偏りを、視覚的に把握できるようになります。
前提条件と準備
まず、必要なライブラリをインポートします。Seaborn、Pandas、NumPy、Matplotlibを使用します。
import seaborn as sb
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
次に、CSVファイルからデータを読み込み、Pandas DataFrameとして扱います。ここでは例として、クリケット選手のデータを含む「Cricketers2.csv」を使用します。
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers2.csv")
箱ひげ図の上にスウォームプロットを描画する手順
箱ひげ図とスウォームプロットを重ねるには、同じx軸・y軸・データを指定して、両方のプロット関数を続けて呼び出すだけです。
- boxplot():
whis=np.infを指定することで、ヒゲの長さを無限にし、外れ値を個別の点として表示しないようにします。 - swarmplot():
color=".3"でグレー系の色を指定し、箱ひげ図との視認性を確保します。
sb.boxplot(x = "Matches", y = "Role", data= dataFrame, whis=np.inf)
sb.swarmplot(x = "Matches", y = "Role", data= dataFrame, color=".3")
完全なサンプルコード
以下に、一連の処理をまとめたコード全体を示します。
import seaborn as sb
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# CSVファイルからPandas DataFrameへデータを読み込む
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers2.csv")
# テーマを設定
sb.set_theme(style="whitegrid")
# 箱ひげ図の上に観測値の群れ(スウォーム)を描画
sb.boxplot(x = "Matches", y = "Role", data= dataFrame, whis=np.inf)
sb.swarmplot(x = "Matches", y = "Role", data= dataFrame, color=".3")
# グラフを表示
plt.show()
実行結果
このコードを実行すると、各「Role」(役割)ごとの「Matches」(試合数)の分布を示す箱ひげ図の上に、実際の観測値が黒っぽい点として重ねて表示されます。これにより、中央値や四分位範囲といった統計量と、個々のデータポイントの位置を同時に確認でき、データのばらつきや外れ値を直感的に理解できます。
まとめ
Seabornでは、boxplot()とswarmplot()を組み合わせるだけで、統計的な要約と生データの分布を1つのグラフで表現できます。特にデータ数がそれほど多くない場合に有効な手法なので、探索的データ分析(EDA)の際にぜひ活用してみてください。
-
Python Pandas入門:Seabornでバイオリン図を描き、四分位数を水平線として表示する方法
Seabornのバイオリンプロット(Violin Plot)は、箱ひげ図(ボックスプロット)とカーネル密度推定(KDE)を組み合わせたグラフを描画するための機能です。seaborn.violinplot()メソッドを使用します。四分位数を水平線として表示するには、innerパラメータにquartileを指定します。データセットの準備ここでは、クリケット選手のデータが格納されたCSVファイル「Cricketers.csv」をデータセットとして使用します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import seaborn as sb import pandas as
-
Python Pandas・Seabornのswarmplotで2つのカテゴリ変数を使ってデータをグループ化する方法
Seabornのスウォームプロット(Swarm Plot)は、点が重ならないように配置されたカテゴリ別散布図を描画するための機能です。この描画には seaborn.swarmplot() を使用します。スウォームを2つのカテゴリ変数でグループ化したい場合は、swarmplot() の x、y、または hue パラメータにそれらの変数を指定します。 ここでは、CSVファイル「Cricketers2.csv」に保存されたデータセットを例に説明します。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import seaborn as sb import pandas as