Seabornのboxplot
関数は、カテゴリに対する分布を示する箱ひげ図(boxplot)を描画するために使用されます。箱ひげ図(boxplot)は、データの分布をカテゴリー間で比較するのに便利です。箱(box)はデータセットの四分位数を示し、ひげ(whisker)は「外れ値」と判断された点を除く、残りの分布を示すために伸びます。
boxplotの基本的な使用法
import seaborn as sns
# データセットの読み込み
tips = sns.load_dataset("tips")
# ボックスプロットの描画
sns.boxplot(x="day", y="total_bill", data=tips)
このコードは、tips
データセット内のday
ごとのtotal_bill
(総請求額)の分布をボックスプロットで示します。
![seaborn boxplot, example](https://2jigenha.com/wp-content/uploads/2024/03/image-43.webp)
seabornに渡すパラメータ
data
: プロットするデータセット。x
とy
がなければ広形式と解釈され、それ以外の場合は長形式と期待されます。x
,y
,hue
: データ内の変数名、またはベクトルデータ。長形式データのプロット用の入力です。order
,hue_order
: カテゴリカルレベルをプロットする順序。指定されていない場合、データオブジェクトからレベルが推測されます。orient
: プロットの向き(垂直または水平)。これは通常、入力変数のタイプに基づいて推測されますが、x
とy
が数値の場合や広形式データをプロットする場合のあいまいさを解決するために使用されます。color
,palette
: プロット要素の色またはhue
変数のレベルの色。saturation
: 塗りつぶし色を描画する際の元の彩度の割合。大きなパッチでは薄い色の方が見栄えが良いことがあります。fill
:True
の場合、固体パッチを使用します。そうでなければ線画として描画されます。dodge
:hue
マッピングを使用する場合、要素を狭めて重なりを解消するかどうか。width
: 各要素に割り当てられる幅。whis
: ウィスカーの長さを制御するパラメータ。
色とパレットのカスタマイズ
sns.boxplot(x="day", y="total_bill", data=tips, color="skyblue")
![seaborn boxplot, custamized color](https://2jigenha.com/wp-content/uploads/2024/03/image-44.webp)
ヒュー(カテゴリカル変数)による分割
sns.boxplot(x="day", y="total_bill", hue="smoker", data=tips, palette="Set3")
![seaborn boxplot, hue](https://2jigenha.com/wp-content/uploads/2024/03/image-45.webp)
垂直と水平の向き
# 垂直向き
sns.boxplot(x="total_bill", data=tips)
# 水平向き
sns.boxplot(y="total_bill", data=tips)
![seaborn boxplot, horizontal](https://2jigenha.com/wp-content/uploads/2024/03/image-46.webp)
![seaborn boxplot, vertical](https://2jigenha.com/wp-content/uploads/2024/03/image-47.webp)
異なる幅とウィスカー長
sns.boxplot(x="day", y="total_bill", data=tips, width=0.5, whis=2.5)
![seaborn](https://2jigenha.com/wp-content/uploads/2024/03/image-48.webp)
Seabornのboxplot
関数は、データの中央値、四分位範囲、外れ値を視覚的に表示する強力なツールです。上記のパラメータを調整することで、様々なデータセットに対して柔軟にボックスプロットをカスタマイズできます。
Seabornを使ったboxplotの例(チュートリアル)
ここからは、さらに豊富なカスタマイズをしていきましょう。有名なタイタニックの生存者のデータを用いて箱ひげ図を作っていきます。
単一の水平ボックスプロット
import seaborn as sns
titanic = sns.load_dataset("titanic")
sns.boxplot(x=titanic["age"])
![seaborn boxplot, titanic](https://2jigenha.com/wp-content/uploads/2024/03/image-49.webp)
カテゴリー的変数によるグループ化
sns.boxplot(data=titanic, x="age", y="class")
class
(等級)ごとに年齢の分布を比較します。
![seaborn boxplot, categorical](https://2jigenha.com/wp-content/uploads/2024/03/image-50.webp)
ネストされたグループ化によるボックスプロット
sns.boxplot(data=titanic, x="class", y="age", hue="alive")
class
によるグループ化に加えて、alive
(生存状況)によるネストされたグループ化を行います。
![](https://2jigenha.com/wp-content/uploads/2024/03/image-51.webp)
データの全範囲をカバーするひげ(whisker)
sns.boxplot(data=titanic, x="age", y="deck", whis=(0, 100))
whis
パラメータを使用して、ひげがデータの全範囲をカバーするようにします。
![seaborn, boxplot, whiscar](https://2jigenha.com/wp-content/uploads/2024/03/image-52.webp)
より狭いボックス
sns.boxplot(data=titanic, x="age", y="deck", width=.5)
ボックスの幅を狭くします。
![seaborn boxplot, narrow](https://2jigenha.com/wp-content/uploads/2024/03/image-53.webp)
Matplotlib関数のパラメータを使用したカスタマイズ
sns.boxplot(
data=titanic, x="age", y="class",
notch=True, showcaps=False,
flierprops={"marker": "x"},
boxprops={"facecolor": (.3, .5, .7, .5)},
medianprops={"color": "r", "linewidth": 2},
)
ノッチの追加、キャップの非表示、外れ値のマーカースタイルの変更、ボックスと中央値の線のカスタマイズを行います。
![seaborn boxplot, matplotlib](https://2jigenha.com/wp-content/uploads/2024/03/image-54.webp)
まとめ
seabornを用いてさまざまな箱ひげ図の作り方を見てきました。データの分析やプレゼンテーションに役立てていただけると幸いです。