Pythonで複数のBoxplotを描く:データ分布を可視化する

データ分析をしていると、複数のカテゴリーやグループの分布を一目で比較する必要があることが多いです。 この時、最も効果的な方法の一つが以下のようなものです。 パイソン boxplotを複数描きます。

파이썬 boxplot 여러개 그리기 그림
( Python boxplotの複数描画の可視化 )

ボックスプロット(Boxplot)はデータの分布と中心傾向を要約するのに便利で、Seabornライブラリを使うと簡単に描くことができます。今回のポストでは ボックスプロットとストリッププロットを組み合わせてデータ分布を可視化するする方法を学びましょう。

BoxplotとStripplotとは?

1.ボックスプロット

  • 定義を表示します:データの分布と中心値(中央値、四分位)を視覚的に表現するボックス図です。
  • 主な特徴:
    • ボックスはIQR(Interquartile Range、四分位範囲)を表します。
    • ヒゲ(whisker)はIQRの範囲外の値を表示します。
    • 異常値(outlier)は個別点として表示されます。
  • 活用:データの中心傾向と分散を把握するのに便利です。

2.Stripplot

  • 定義を表示します:データの個々の値を点として表す散布図です。
  • 主な特徴:
    • Boxplotがデータの分布を示すのに対し、Stripplotは各データポイントの位置を正確に示します。
    • Boxplotと併用すると データ分布と個別値を同時に視覚化することができます。

Pythonで複数のBoxplotを描く

以下はPythonのSeabornライブラリを使って 曜日別合計金額データをボックスプロットで可視化する例です。 また、Stripplotを組み合わせて各データポイントを一目で見ることができます。

コードブロック

import seaborn as sns
matplotlib.pyplot as pltをインポートします。

# データの読み込み
tips = sns.load_dataset('tips')

# ボックスプロットとストリッププロットの組み合わせ
plt.figure(figsize=(10, 6))
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2') #のボックスプロット生成
sns.stripplot(x='day', y='total_bill', data=tips, color='.25') # ストリッププロットを作成します。

# グラフスタイリング
plt.title("Drawing Multiple Boxplots in Python: Total Bill by Day", fontsize=15)
plt.xlabel("Day of the Week", fontsize=12)
plt.ylabel("Total Bill ($)", fontsize=12)

# グラフ出力
plt.tight_layout()
plt.show()

コードの簡単な解説

  1. データロード
    • sns.load_dataset('tips')を使用してレストランのチップデータを呼び出します。
  2. ボックスプロット作成
    • sns.boxplot()を使用して各曜日の合計金額(total_bill)データを可視化します。
  3. ストリッププロット結合
    • sns.stripplot()を使用して、個々のデータポイントをボックスプロット上に重ねて表示します。
  4. グラフスタイリング
    • タイトルと軸ラベルを追加して、グラフを見やすくします。

ボックスプロットとストリッププロットの組み合わせのメリット

  1. ボックスプロットの役割
    • 各曜日のデータ分布と中心傾向(中央値、IQR)を明確に示しています。
    • データの異常値を視覚的に強調することができます。
  2. ストリッププロットの役割
    • ボックスプロットが要約したデータ分布を補完し、個々のデータポイントを確認することができます。
    • データをより精密に分析するのに役立ちます。
  3. 結合効果
    • 2つのプロットを組み合わせることで、データの全体的な分布と個々のデータ間の関係を同時に視覚化することができます。

グラフから得られるインサイト

파이썬 Boxplot 여러개 그리기 결과 분석 그림
( Python Boxplotの複数描画結果の分析 )
  1. 曜日別分布の違い
    • 週末(土曜日、日曜日)は、合計金額の中央値が他の曜日より高いです。
  2. 異常値確認
    • 土曜日は合計金額が$50以上の極端な値(outliers)が目立ちます。
  3. 個別データ確認
    • ストリッププロットのおかげで、各曜日のデータが実際にどのように分布しているかを知ることができます。

仕上げ

今回の記事では Pythonのboxplotを複数描いてみて、ストリッププロットを結合するして、データをより豊かに可視化する方法を学びました。

活用のヒント

  • ボックスプロット:データの全体的な分布を素早く確認する際に使用します。
  • ストリッププロット:個々のデータポイントを追加的に分析する際に結合します。
  • 複数のデータセットに適用し、カテゴリー別の比較を明確に表現します。

直接コードを実行し、この方法をあなたのデータに適用して、新しいインサイトを発見してみましょう!そして 22年ぶりの変化:ウォーレンバフェット債券投資に隠された秘密(feat.Python棒グラフ) ポストを通してPythonの視覚化の基本を固めてみてください!

#コード詳細解説

1.ライブラリとデータの読み込み
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')  
  • シーボーンを使用します:ボックスプロットとストリッププロットを生成するライブラリです。
  • Matplotlib:グラフのスタイリングと出力を支援します。
  • ヒント データセット:レストランの曜日ごとの合計金額データを含むサンプルデータです。
2.ボックスプロット作成
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2')  
  • x='day'X 軸に曜日データを設定します。
  • y='total_bill'Y軸に合計金額データを設定します。
  • palette='Set2': SeabornのSet2パレットを使ってグラフの色を設定します。
3.ストリッププロットの作成
sns.stripplot(x='day', y='total_bill', data=tips, color='.25')  
  • color='.25'点線の色を薄いグレーに設定し、ボックスプロットとコントラストを出します。
  • ボックスプロットの上に重ねて、データポイントを追加で可視化します。
4.グラフのスタイリングと出力
plt.title("Pythonで複数のボックスプロットを描く: 日ごとの合計請求書", fontsize=15)
plt.xlabel("Day of the Week", fontsize=12)
plt.ylabel("Total Bill ($)", fontsize=12)
plt.tight_layout()
plt.show()
  • plt.title(): グラフタイトルを追加して、視覚化の目的を明確に表現します。
  • tight_layout(): グラフの余白を自動的に調整し、各要素が重ならないようにします。

#Tipsデータの説明

ヒント このデータセットはSeabornライブラリが提供するサンプルデータで、レストランで顧客が支払った金額とチップ、そしていくつかの関連情報を含んでいます。このデータは、データ分析と可視化の練習によく使用され、Python boxplotの描画にも活用されます。

データセット概要
カラム名説明データタイプ
total_bill総支払額(ドル)数値型 (float)
ヒントチップ金額(ドル)数値型 (float)
セックスお客様の性別 ('Male', 'Female')カテゴリ型 (string)
喫煙者喫煙の有無 ('Yes', 'No')カテゴリ型 (string)
訪問曜日 ('Thur', 'Fri', 'Sat', 'Sun')カテゴリ型 (string)
時間訪問時間 ('Lunch', 'Dinner')カテゴリ型 (string)
サイズ食事人数数値型 (int)
データセット説明
1. total_bill
  • お客様が支払った合計金額です。
  • 単位はドル($)で、チップと飲食代を含みます。
  • ボックスプロットでは、このカラムを使用して曜日ごとの合計金額の分布を視覚化します。
2.ヒント
  • お客様が支払ったチップの金額です。
  • 合計金額に対するチップの割合を計算し、チップ文化を分析するためによく使われます。
3.性別
  • お客様の性別です。
  • データは'Male'(男性)と'Female'(女性)に分かれています。
  • 性別によるチップ額の違いを比較したり、性別別の支出パターンを分析することができます。
4.喫煙者
  • お客様の喫煙の有無を示します。
  • 喫煙客('Yes')と非喫煙客('No')に分かれており、喫煙の有無がチップの金額や支出パターンに影響を与えるかどうかを分析する際に役立ちます。
5.日
  • お客様が訪れた曜日です。
  • Thur(木曜日)、Fri(金曜日)、Sat(土曜日)、Sun(日曜日)と表示されます。
  • 曜日ごとの合計金額やチップ額の違いを分析することができます。
6.時間
  • 訪問時間が「Lunch」(昼食)か「Dinner」(夕食)かを示します。
  • 時間帯別の支出パターンを比較したり、チップの割合の違いを分析するのに便利です。
7.サイズ
  • 食事の人数です。
  • グループの規模が総額やチップの金額にどのような影響を与えるかを分析する際に使用されます。

類似の投稿