STEP 14:Seabornでの統計的可視化

📊 STEP 14: Seabornでの統計的可視化

データの統計情報を自動で表示してくれるSeabornの強力な機能を使いこなそう!

📋 このステップで学ぶこと

  • Seabornの3大関数(relplot、displot、catplot)の使い分け
  • relplot()で変数間の関係性を可視化する方法
  • displot()でデータの分布を可視化する方法
  • catplot()でカテゴリカルデータを可視化する方法
  • 統計情報(平均、信頼区間)の自動計算と表示
  • 実践的なデータ分析ダッシュボードの作成

🎯 1. Seabornの3大関数とは

なぜ3大関数を学ぶのか

Seabornには多くの関数がありますが、最も重要なのはrelplot()、displot()、catplot()の3つです。これらを「3大関数」と呼びます。

この3つの関数を覚えれば、ほとんどのデータ可視化に対応できます。それぞれが異なる種類のデータ分析に特化しているため、データの種類に応じて使い分けます。

💡 3大関数を料理に例えると

3大関数は、料理の調理法に似ています。

relplot(焼く):2つの食材の組み合わせを見る(肉と野菜の相性)

displot(切る):1つの食材の中身を調べる(断面を見る)

catplot(盛り付け):カテゴリ別に分けて比較する(前菜・メイン・デザート別)

📊 Seabornの3大関数
関数 用途 作れるグラフ 使う場面
relplot() 変数間の関係性 散布図、折れ線グラフ 「AとBに関係があるか?」
displot() データの分布 ヒストグラム、KDE、ECDF 「データはどう散らばっている?」
catplot() カテゴリカルデータ 棒グラフ、箱ひげ図、バイオリン図 「グループ間で違いがある?」

小文字のplotと大文字のPlotの違い

Seabornには似たような名前の関数がたくさんあります。例えば、scatterplot()とrelplot()、histplot()とdisplot()などです。これらの違いを理解しましょう。

📝 小文字plot vs 大文字Plot
種類 特徴 使いどころ
小文字(〜plot) scatterplot()、histplot() 1つのグラフだけを作成 plt.subplot()と組み合わせるとき
大文字(〜Plot) relplot()、displot() 複数グラフを自動配置できる 単体で使うとき(推奨)
💡 初心者へのアドバイス

基本的には大文字版(relplot、displot、catplot)を使うことを推奨します。大文字版は、複数のグラフを自動で配置する「ファセット」機能が使えるなど、より高機能です。小文字版は、複数のグラフを1つの図に並べたいときに使います。

🔗 2. relplot()(関係性の可視化)

relplot()とは

relplot()は、「relation(関係)」を可視化する関数です。2つの変数の間にどのような関係があるかを調べるときに使います。

例えば、「会計額が高いとチップも多いのか?」「広告費を増やすと売上は伸びるのか?」といった疑問に答えるのに適しています。

📊 relplot()で作れるグラフ
kind グラフの種類 使う場面
kind=’scatter’ 散布図(デフォルト) 2変数の相関を見たいとき
kind=’line’ 折れ線グラフ 時系列の変化を見たいとき

基本的な散布図を作る

まずは、最もシンプルな散布図を作成してみましょう。Seabornに付属している「tips」データセット(レストランのチップデータ)を使います。

コードを1つずつ見ていきましょう。

# ライブラリを読み込む import seaborn as sns import matplotlib.pyplot as plt
📝 インポートの意味
コード 意味 なぜ必要か
import seaborn as sns Seabornをsnsという名前で読み込む 統計的可視化の機能を使うため
import matplotlib.pyplot as plt Matplotlibをpltという名前で読み込む タイトル追加や表示制御のため
# スタイルとカラーパレットを設定 sns.set_style(‘whitegrid’) sns.set_palette(‘colorblind’)
📝 スタイル設定の意味
コード 意味 なぜ使うか
sns.set_style(‘whitegrid’) 白背景にグリッド線を表示 データが見やすくなる
sns.set_palette(‘colorblind’) 色覚バリアフリーな色を使用 誰にでも見やすい配色になる
# サンプルデータを読み込む tips = sns.load_dataset(‘tips’)
📝 データ読み込みの意味

sns.load_dataset(‘tips’)は、Seabornに付属しているサンプルデータを読み込む関数です。’tips’はレストランのチップに関するデータで、以下の列が含まれています。

列名 意味 データ型
total_bill 会計額(ドル) 数値
tip チップ(ドル) 数値
sex 性別 カテゴリ
day 曜日 カテゴリ
time 時間帯(Lunch/Dinner) カテゴリ
size 人数 数値
# 散布図を作成 sns.relplot( data=tips, x=’total_bill’, y=’tip’, height=6, aspect=1.5 )
📝 relplot()のパラメータ
パラメータ 意味 設定値の例
data 使用するデータフレーム tips(読み込んだデータ)
x X軸に使う列名 ‘total_bill’(会計額)
y Y軸に使う列名 ‘tip’(チップ)
height グラフの高さ(インチ) 6
aspect アスペクト比(幅÷高さ) 1.5(幅が高さの1.5倍)

完成コード:基本的な散布図

上記のコードをまとめた完成版です。コードセルに入力して実行してください。

# ========================================= # 【実践】基本的な散布図 # ========================================= import seaborn as sns import matplotlib.pyplot as plt # スタイル設定 sns.set_style(‘whitegrid’) sns.set_palette(‘colorblind’) # データ読み込み tips = sns.load_dataset(‘tips’) # 散布図を作成 sns.relplot( data=tips, x=’total_bill’, # X軸: 会計額 y=’tip’, # Y軸: チップ height=6, # 図の高さ aspect=1.5 # アスペクト比 ) # タイトルを追加 plt.title(‘会計額とチップの関係’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

色とサイズで情報を追加する

散布図に色(hue)サイズ(size)を追加すると、1つのグラフで4つの変数を同時に表現できます。これを「多次元データの可視化」と呼びます。

🎨 追加できるパラメータ
パラメータ 意味 効果
hue 色分けに使う列 カテゴリ別に色が変わる
size サイズに使う列 値に応じて点の大きさが変わる
style マーカー形状に使う列 カテゴリ別に形が変わる
col 列方向に分割する列 カテゴリ別に複数グラフを横に並べる
row 行方向に分割する列 カテゴリ別に複数グラフを縦に並べる
# ========================================= # 【実践】色とサイズで4次元データを表現 # ========================================= import seaborn as sns import matplotlib.pyplot as plt # スタイル設定 sns.set_style(‘whitegrid’) sns.set_palette(‘colorblind’) # データ読み込み tips = sns.load_dataset(‘tips’) # 色とサイズを追加した散布図 sns.relplot( data=tips, x=’total_bill’, # X軸: 会計額 y=’tip’, # Y軸: チップ hue=’day’, # 色: 曜日で色分け size=’size’, # サイズ: 人数で大きさ変更 height=6, aspect=1.5 ) plt.title(‘会計額とチップの関係(曜日・人数別)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()
【このグラフから読み取れること】 ・X軸(横軸): 会計額が高いほど右に位置 ・Y軸(縦軸): チップが多いほど上に位置 ・色: 曜日によって色が異なる ・サイズ: 人数が多いほど点が大きい → 会計額とチップには正の相関がある(右肩上がり) → 土日(週末)の方がチップが多い傾向 → 人数が多いグループは会計額も高い

折れ線グラフ(kind=’line’)

relplot()は散布図だけでなく、折れ線グラフも作成できます。時系列データの変化を見るのに適しています。

Seabornの折れ線グラフには特別な機能があります。同じX値に複数のデータがある場合、自動で平均値を計算し、信頼区間(影の部分)も表示してくれます。

# ========================================= # 【実践】折れ線グラフ(自動で平均と信頼区間を計算) # ========================================= import seaborn as sns import matplotlib.pyplot as plt # フライトデータを読み込み flights = sns.load_dataset(‘flights’) # 折れ線グラフを作成 sns.relplot( data=flights, x=’year’, # X軸: 年 y=’passengers’, # Y軸: 乗客数 kind=’line’, # グラフの種類: 折れ線 height=6, aspect=1.8 ) plt.title(‘年別乗客数の推移’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()
✨ Seabornの折れ線グラフのすごいところ

上のグラフでは、各年に12ヶ月分のデータがあります。Seabornは自動的に以下を計算します。

・実線:各年の平均乗客数

・影の部分:95%信頼区間(データのばらつきの範囲)

ファセット(グラフの分割)

ファセット(facet)とは、カテゴリ別にグラフを分割して並べる機能です。col(列方向)やrow(行方向)を指定すると、自動でグラフが分割されます。

# ========================================= # 【実践】月別にグラフを分割(ファセット) # ========================================= import seaborn as sns import matplotlib.pyplot as plt # フライトデータを読み込み flights = sns.load_dataset(‘flights’) # 月別にグラフを分割 sns.relplot( data=flights, x=’year’, # X軸: 年 y=’passengers’, # Y軸: 乗客数 kind=’line’, # 折れ線グラフ col=’month’, # 月別に列で分割 col_wrap=4, # 4列で折り返し height=3, # 各グラフの高さ aspect=1.2 # 各グラフのアスペクト比 ) plt.tight_layout() plt.show()
📝 ファセットのパラメータ
パラメータ 意味 効果
col=’month’ 列方向に分割するカテゴリ 月ごとに別のグラフが作られる
col_wrap=4 何列で折り返すか 4列×3行のレイアウトになる

📊 3. displot()(分布の可視化)

displot()とは

displot()は、「distribution(分布)」を可視化する関数です。1つの変数がどのように散らばっているかを調べるときに使います。

例えば、「会計額は平均いくらぐらいか?」「ばらつきは大きいか小さいか?」「特定の金額に集中しているか?」といった疑問に答えるのに適しています。

📊 displot()で作れるグラフ
kind グラフの種類 特徴
kind=’hist’ ヒストグラム(デフォルト) 棒の高さでデータ数を表現
kind=’kde’ カーネル密度推定(KDE) 滑らかな曲線で分布を表現
kind=’ecdf’ 累積分布関数(ECDF) 「〇以下の割合」を表現

ヒストグラムを作る

ヒストグラムは、データを「ビン(区間)」に分けて、各区間のデータ数を棒の高さで表します。最も基本的な分布の可視化方法です。

# ========================================= # 【実践】ヒストグラム # ========================================= import seaborn as sns import matplotlib.pyplot as plt # データ読み込み tips = sns.load_dataset(‘tips’) # ヒストグラムを作成 sns.displot( data=tips, x=’total_bill’, # 分布を見たい列 bins=20, # ビン(区間)の数 height=6, aspect=1.5 ) plt.title(‘会計額の分布’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()
📝 binsパラメータの意味

bins(ビン)は、データを何個の区間に分けるかを指定します。

・bins=10:大まかな分布がわかる(粗い)

・bins=20:標準的な細かさ(推奨)

・bins=50:詳細な分布がわかる(データ数が多いとき)

KDE(カーネル密度推定)を作る

KDE(Kernel Density Estimation)は、ヒストグラムを滑らかな曲線で表現したものです。データの「形状」がより直感的にわかります。

# ========================================= # 【実践】KDE(滑らかな分布曲線) # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # KDEを作成 sns.displot( data=tips, x=’total_bill’, kind=’kde’, # KDEを指定 fill=True, # 曲線の下を塗りつぶす height=6, aspect=1.5 ) plt.title(‘会計額の分布(KDE)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

ヒストグラムとKDEを重ねる

ヒストグラムとKDEを重ねて表示すると、具体的なデータ数と滑らかな分布の両方がわかります。

# ========================================= # 【実践】ヒストグラム + KDE # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # ヒストグラムとKDEを重ねて表示 sns.displot( data=tips, x=’total_bill’, kde=True, # KDEを追加 bins=20, height=6, aspect=1.5 ) plt.title(‘会計額の分布(ヒストグラム + KDE)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

カテゴリ別に分布を比較する

hueパラメータを使うと、カテゴリ別の分布を重ねて比較できます。グループ間の違いが一目でわかります。

# ========================================= # 【実践】性別で分布を比較 # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # 性別で色分けして分布を比較 sns.displot( data=tips, x=’total_bill’, hue=’sex’, # 性別で色分け kde=True, # KDEも追加 bins=20, height=6, aspect=1.5 ) plt.title(‘会計額の分布(性別比較)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

📦 4. catplot()(カテゴリカルデータ)

catplot()とは

catplot()は、「categorical(カテゴリ)」データを可視化する関数です。グループ間の比較をするときに使います。

例えば、「曜日によってチップは変わるか?」「性別で売上に差があるか?」といった疑問に答えるのに適しています。

💡 カテゴリカルデータとは

カテゴリカルデータとは、「種類」や「グループ」を表すデータです。

カテゴリカルデータの例:曜日(月〜日)、性別(男/女)、時間帯(Lunch/Dinner)、地域(東京/大阪)

数値データの例:金額、人数、気温、距離

📊 catplot()で作れるグラフ
kind グラフの種類 特徴 使う場面
kind=’strip’ ストリッププロット 全データ点を表示 生データを見たいとき
kind=’swarm’ スウォームプロット 重ならないよう配置 データの分布を見たいとき
kind=’box’ 箱ひげ図 中央値・四分位を表示 ばらつきを比較したいとき
kind=’violin’ バイオリン図 分布を滑らかに表現 分布の形を比較したいとき
kind=’bar’ 棒グラフ 平均値を表示 平均を比較したいとき
kind=’point’ ポイントプロット 平均値と信頼区間 変化を追いたいとき

棒グラフ(kind=’bar’)

catplot()の棒グラフは、自動で平均値を計算してくれます。さらに、信頼区間(エラーバー)も自動表示されます。

# ========================================= # 【実践】曜日別の平均チップ(自動計算) # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # 棒グラフを作成(平均値を自動計算) sns.catplot( data=tips, x=’day’, # X軸: 曜日 y=’tip’, # Y軸: チップ kind=’bar’, # 棒グラフ height=6, aspect=1.5 ) plt.title(‘曜日別平均チップ’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()
✨ catplot()のすごいところ

上のコードでは、たった1行で以下のことを自動で行っています。

1. 曜日別にデータをグループ化

2. 各曜日のチップの平均値を計算

3. 95%信頼区間を計算してエラーバーを表示

Matplotlibだけでこれをやろうとすると、事前にgroupby()で集計する必要があり、10行以上のコードが必要です!

箱ひげ図(kind=’box’)

箱ひげ図は、データの中央値、四分位数、外れ値を1つのグラフで表現できます。データのばらつきを比較するのに最適です。

# ========================================= # 【実践】箱ひげ図 # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # 箱ひげ図を作成 sns.catplot( data=tips, x=’day’, # X軸: 曜日 y=’tip’, # Y軸: チップ kind=’box’, # 箱ひげ図 height=6, aspect=1.5 ) plt.title(‘曜日別チップの分布(箱ひげ図)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()
【箱ひげ図の読み方】 ┌─────┐ ← 最大値(外れ値を除く) │ │ ├─────┤ ← 第3四分位(75%) │ ─ │ ← 中央値(50%) ├─────┤ ← 第1四分位(25%) │ │ └─────┘ ← 最小値(外れ値を除く) ● ← 外れ値(点で表示) 箱の高さ = データの50%が含まれる範囲(四分位範囲) 箱が大きい = ばらつきが大きい

バイオリン図(kind=’violin’)

バイオリン図は、箱ひげ図とKDEを組み合わせたグラフです。分布の形状がより直感的にわかります。

# ========================================= # 【実践】バイオリン図 # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # バイオリン図を作成 sns.catplot( data=tips, x=’day’, # X軸: 曜日 y=’tip’, # Y軸: チップ kind=’violin’, # バイオリン図 height=6, aspect=1.5 ) plt.title(‘曜日別チップの分布(バイオリン図)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

hueで色分けする

hueパラメータを追加すると、カテゴリ×カテゴリのクロス集計を可視化できます。

# ========================================= # 【実践】曜日×性別のクロス集計 # ========================================= import seaborn as sns import matplotlib.pyplot as plt sns.set_style(‘whitegrid’) sns.set_palette(‘colorblind’) tips = sns.load_dataset(‘tips’) # 曜日×性別でクロス集計 sns.catplot( data=tips, x=’day’, # X軸: 曜日 y=’tip’, # Y軸: チップ hue=’sex’, # 色: 性別で色分け kind=’bar’, # 棒グラフ height=6, aspect=1.5 ) plt.title(‘曜日・性別別の平均チップ’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

📈 5. 信頼区間の表示

信頼区間とは

信頼区間(Confidence Interval)は、「真の平均がこの範囲に含まれる可能性が高い」ことを示す統計的な指標です。

棒グラフの上に表示される「ひげ」(エラーバー)が信頼区間です。ひげが長いほど、データのばらつきが大きいことを意味します。

💡 信頼区間を日常に例えると

「明日の気温は20度です」と言われるより、「明日の気温は18〜22度の範囲です」と言われる方が、予測の不確実性がわかりますよね。

信頼区間は、この「範囲」を統計的に計算したものです。

📊 errorbarパラメータの選択肢
設定 意味 使う場面
errorbar=’ci’ 95%信頼区間(デフォルト) 標準的な統計分析
errorbar=’sd’ 標準偏差 ばらつきの大きさを見たいとき
errorbar=’se’ 標準誤差 サンプル数が多いとき
errorbar=None エラーバーなし シンプルな見た目にしたいとき
# ========================================= # 【実践】標準偏差を表示 # ========================================= import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset(‘tips’) # 信頼区間の代わりに標準偏差を表示 sns.catplot( data=tips, x=’day’, y=’tip’, kind=’bar’, errorbar=’sd’, # 標準偏差を表示 height=6, aspect=1.5 ) plt.title(‘曜日別平均チップ(標準偏差付き)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

🎯 6. 実践例:総合ダッシュボード

3つの関数を組み合わせた分析

ここまで学んだ3大関数を組み合わせて、実践的な分析ダッシュボードを作成しましょう。1つのデータセットを複数の角度から分析します。

ダッシュボードでは、複数のグラフを1つの図に並べます。そのため、大文字版(relplot等)ではなく、小文字版(scatterplot等)を使います。

📝 大文字版と小文字版の使い分け
場面 使う関数 理由
1つのグラフだけ作る relplot()、displot()等 高機能で便利
複数グラフを並べる scatterplot()、histplot()等 plt.subplot()と組み合わせやすい

コードが長いので、スマートフォンでは横スクロールして確認してください。

# ========================================= # 【実践】総合ダッシュボード # ========================================= import seaborn as sns import matplotlib.pyplot as plt # データ読み込み tips = sns.load_dataset(‘tips’) # スタイル設定 sns.set_style(‘whitegrid’) sns.set_palette(‘colorblind’) # 2×2のレイアウトを作成 fig = plt.figure(figsize=(16, 12)) # 1. 散布図(左上) plt.subplot(2, 2, 1) sns.scatterplot(data=tips, x=’total_bill’, y=’tip’, hue=’time’, style=’sex’, s=100, alpha=0.7) plt.title(‘会計額とチップの関係’, fontsize=14, fontweight=’bold’) plt.legend(title=’凡例’, fontsize=9, loc=’upper left’) # 2. ヒストグラム(右上) plt.subplot(2, 2, 2) sns.histplot(data=tips, x=’total_bill’, hue=’sex’, kde=True, bins=20, alpha=0.6) plt.title(‘会計額の分布(性別比較)’, fontsize=14, fontweight=’bold’) plt.legend(title=’性別’, fontsize=9) # 3. 箱ひげ図(左下) plt.subplot(2, 2, 3) sns.boxplot(data=tips, x=’day’, y=’tip’, hue=’sex’) plt.title(‘曜日別チップの分布’, fontsize=14, fontweight=’bold’) plt.legend(title=’性別’, fontsize=9) # 4. バイオリン図(右下) plt.subplot(2, 2, 4) sns.violinplot(data=tips, x=’time’, y=’total_bill’, hue=’sex’, split=True) plt.title(‘時間帯別会計額の分布’, fontsize=14, fontweight=’bold’) plt.legend(title=’性別’, fontsize=9) # 全体タイトル plt.suptitle(‘📊 レストランデータ分析ダッシュボード’, fontsize=18, fontweight=’bold’, y=0.995) plt.tight_layout() # 保存 plt.savefig(‘seaborn_dashboard.png’, dpi=300, bbox_inches=’tight’) plt.show()
【ダッシュボードから読み取れること】 1. 散布図: 会計額が高いほどチップも多い(正の相関) 2. ヒストグラム: 男性の方が高額な会計が多い傾向 3. 箱ひげ図: 週末(土日)はチップのばらつきが大きい 4. バイオリン図: ディナーの方がランチより会計額が高い → このように複数の角度から分析することで、 データの全体像が見えてきます!

📝 STEP 14 のまとめ

✅ このステップで学んだこと
トピック 重要ポイント
3大関数 relplot(関係性)、displot(分布)、catplot(カテゴリ)
relplot() 散布図・折れ線グラフで変数間の関係を可視化
displot() ヒストグラム・KDEでデータの分布を可視化
catplot() 棒グラフ・箱ひげ図でグループ間を比較
統計情報 平均値・信頼区間を自動計算して表示
多次元表現 hue、size、styleで複数変数を同時に表現
ファセット col、rowでカテゴリ別にグラフを分割
💡 最重要ポイント

Seabornの3大関数(relplot、displot、catplot)を使えば、統計情報を自動で計算・表示できます。

特にcatplot()の棒グラフは、カテゴリ別の平均値と信頼区間を1行で可視化できる強力なツールです。

次のステップでは、ヒートマップと相関行列を学びます。変数間の関係をさらに詳しく分析できるようになります!

📝 実践演習

演習 1 基礎

tipsデータセットを使って、会計額(total_bill)とチップ(tip)の散布図を作成してください(relplot使用)。

【解答コード】
import seaborn as sns import matplotlib.pyplot as plt sns.set_style(‘whitegrid’) tips = sns.load_dataset(‘tips’) sns.relplot( data=tips, x=’total_bill’, y=’tip’, height=6, aspect=1.5 ) plt.title(‘会計額とチップの関係’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

ポイント:relplot()のデフォルトは散布図なので、kind=’scatter’を省略できます。

演習 2 応用

tipsデータセットの会計額(total_bill)の分布を、ヒストグラムとKDEを重ねて表示してください(displot使用)。

【解答コード】
import seaborn as sns import matplotlib.pyplot as plt sns.set_style(‘whitegrid’) tips = sns.load_dataset(‘tips’) sns.displot( data=tips, x=’total_bill’, kde=True, # KDEを追加 bins=25, height=6, aspect=1.5 ) plt.title(‘会計額の分布’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

ポイント:kde=Trueを追加するだけで、ヒストグラムの上にKDE曲線が重なります。

演習 3 発展

曜日別のチップの平均値を棒グラフで表示し、性別で色分けしてください(catplot使用)。95%信頼区間も表示してください。

【解答コード】
import seaborn as sns import matplotlib.pyplot as plt sns.set_style(‘whitegrid’) sns.set_palette(‘colorblind’) tips = sns.load_dataset(‘tips’) sns.catplot( data=tips, x=’day’, y=’tip’, hue=’sex’, # 性別で色分け kind=’bar’, errorbar=’ci’, # 95%信頼区間 height=6, aspect=1.5 ) plt.title(‘曜日・性別別の平均チップ(95%信頼区間付き)’, fontsize=16, fontweight=’bold’, pad=15) plt.tight_layout() plt.show()

ポイント:errorbar=’ci’はデフォルトなので省略可能ですが、明示的に書くと意図が明確になります。

❓ よくある質問

Q1: relplot、displot、catplotはいつ使い分けるべきですか?
データの種類と分析の目的で選びましょう。「2つの数値変数の関係を見たい」→ relplot、「1つの変数の分布を見たい」→ displot、「カテゴリ別に比較したい」→ catplot。迷ったら、まず「何を比較したいか」を考えてください。グループ間の違いを見たいならcatplot、変数同士の相関を見たいならrelplotです。
Q2: 信頼区間のエラーバーが長すぎます。どうすればいいですか?
これはデータのばらつきが大きいことを示しています。エラーバーが長いこと自体は「問題」ではなく、データの特性を正しく表しています。見た目を変えたい場合は、errorbar=’se’(標準誤差)を使うとエラーバーが短くなります。または、errorbar=Noneで非表示にできます。ただし、データの実態を正しく伝えるためには、信頼区間を表示することを推奨します。
Q3: catplotで合計値ではなく平均値が表示されます。合計値を表示できますか?
catplotは統計的な平均値を表示する設計です。合計値を表示したい場合は、事前にPandasでgroupby().sum()を使って集計してから、sns.barplot()やplt.bar()を使いましょう。例えば、df_sum = tips.groupby(‘day’)[‘tip’].sum().reset_index() で合計を計算してから、棒グラフを作成します。
Q4: 複数のグラフを1つの図に並べたいとき、relplotは使えないのですか?
その通りです。relplot、displot、catplotは「Figure-level」関数と呼ばれ、1つの図全体を制御します。そのため、plt.subplot()と組み合わせることができません。複数のグラフを並べたいときは、「Axes-level」関数(scatterplot、histplot、boxplotなど)を使ってください。
Q5: Seabornのサンプルデータ(tips、flights等)以外のデータでも使えますか?
もちろん使えます!Seabornの関数は、Pandasのデータフレームであれば何でも使えます。自分のCSVファイルをdf = pd.read_csv(‘data.csv’)で読み込んで、data=dfと指定すればOKです。列名はx=’列名’、y=’列名’のように文字列で指定します。
📝

学習メモ

データ可視化マスター - Step 14

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE