Seabornの棒グラフ:完全ガイド

データの可視化は、複雑な情報を明確で実行可能な洞察に変えます。 Seabornの棒グラフは、優雅で統計的なグラフを通じてカテゴリカルデータを提示するのに優れています。 このライブラリはMatplotlibの柔軟性とpandasのパワーを組み合わせ、迅速な分析や公開用の視覚化に最適です。

Seabornの棒グラフは、基本的な比較から高度な統計的表現まで、データ分析に必要な機能を提供しています。 地域間の売上指標の比較、調査結果の分析、実験結果の視覚化など、一般的なタスクを処理します。

このライブラリの直感的な構文と組み込みの統計関数により、初心者から経験豊富なデータプラクティショナーまでに価値があります。

この記事では、Seabornの棒グラフの基本、コード例を使用した基本プロットの作成、カスタマイズを通じたプロットの強化、高度な機能の実装、実用的なアプリケーションの探索を見ていきます。

Seaborn のデータ可視化について詳しく知りたい場合は、Seaborn を使用したデータ可視化入門コースをご覧ください。

Seaborn の基本的な barplot

barplot に入る前に、Seaborn の基本、bar plot における利点、およびコーディング環境の設定方法を見てみましょう。

Seaborn とは何ですか?

Seabornは、Matplotlibの上に構築されたPythonの統計データ可視化ライブラリです。最小限のコードで情報量豊かで魅力的な統計グラフィックを作成することに特化しています。このライブラリはpandas DataFramesと密接に統合されており、データ分析ワークフローに特に効果的です。

多くのスタイリングの詳細を自動的に処理しながら、魅力的なプロットを描画するための高レベルのインターフェースを提供します。

このライブラリは、次の3つの主要な側面で優れています:

  • pandas DataFramesとシームレスに統合されており、データ操作が簡単です
  • 組み込みの統計関数を備えており、別個の計算が不要になります
  • デフォルトで専門的なテーマやカラーパレットが適用されます

たとえば、Matplotlibは基本的な統計可視化を作成するために複数行のコードが必要ですが、Seabornは1つの関数呼び出しで同じタスクを達成できます。

具体的には、Seabornは棒グラフに対して自動平均計算、信頼区間、高度なカテゴリ変数の処理などの強力な機能を追加します – これらの機能は、通常のMatplotlibではかなりの追加コードが必要です。

なぜ棒グラフを使用するのですか?

バープロットは、縦または横の棒を使ってカテゴリカルデータを表現し、長さが数値を表します。これにより、異なるグループやカテゴリ間での値の比較に最適です。データ分析では、バープロットは調査結果、市場シェア、パフォーマンスメトリクス、販売分布を視覚化するのに役立ちます。

主な利点は次のとおりです:

  • カテゴリ間の数量の明確な比較
  • 組み込みの統計機能(平均、中央値、信頼区間)
  • グループ化されたデータの効果的な表現
  • シンプルでありながら情報量の多い視覚要素
  • プロフェッショナルなプレゼンテーションのための簡単なカスタマイズオプション

クイックセットアップ

Seabornを使用してバープロットを作成するには、Python環境をセットアップする必要があります。以下は始め方です:

まず、以下に示すように必要なパッケージをインストールしましょう:

pip install seaborn pandas numpy

これで、すべての可視化ツールが使用できるようになりました。以下に必要なライブラリをインポートしましょう:

# 統計的な可視化を作成するため import seaborn as sns # データの操作と分析のため import pandas as pd # 数値演算のため import numpy as np

いくつかのスタイル設定を使用してプロットを見栄え良くすることができます。以下はその方法です:

# クリーンなホワイトスタイル sns.set_style("white")

whiteスタイルはグリッド線を削除し、ほとんどの画面でプロットが見栄え良くなります。次のセクションでは、バープロットの作成とそれらの強化について見ていきます。

基本的なSeabornバープロットの作成

棒グラフは、カテゴリカル変数と数値変数の関係を視覚化するのに最適です。これは、ポイント推定(平均や中央値など)を示し、その推定値の周りの不確実性をエラーバーを通じて示します。Seabornの棒グラフの基本的な構文を見てみましょう。

構文とパラメータ

Seabornのsns.barplot()関数は、統計的棒グラフを作成するための簡単な方法を提供します。.barplot()関数の基本的な構造は以下のようになります:

sns.barplot( data=None, # Your DataFrame x=None, # Category variable y=None, # Numeric variable estimator='mean', # Statistical function to estimate errorbar=('ci', 95), # Error bars type and level orient=None # "v" for vertical, "h" for horizontal )

これらのパラメーターは、表示するデータとその表示方法を制御します。data パラメーターはDataFrameを取ります。一方、xy はどの列をカテゴリーと値として使用するかを指定します。 estimator は適用する統計関数を選択できます(デフォルトは平均値)。errorbar は不確かさの表示方法を制御します。 orient パラメーターを使用して、縦および横の表示形式を切り替えることもできます。

さて、Seabornの組み込みtipsデータセットを使用して、効果的な棒グラフを作成する方法を見てみましょう。このデータセットには、レストランの会計とチップに関する情報が含まれています。

例:シンプルなデータセットの可視化

tipsデータセットを使用して、週の異なる日におけるチッピングの行動を見てみましょう。このデータセットには、曜日、総会計金額、チップ金額、その他の変数に関する情報が含まれています。

# 必要なライブラリをインポートしてデータセットを読み込む import seaborn as sns tips = sns.load_dataset("tips") # 曜日ごとの平均チップを示す基本的な棒グラフを作成 sns.barplot(data=tips, x="day", y="tip")

出力:

上記の可視化が作成され、各棒は週の異なる日に対する平均チップ金額を表しています。各棒の高さは平均チップ値を示し、黒い線(誤差棒)は95%信頼区間を示しており、典型的なチップ金額とどれだけ変動するかについての洞察を提供しています。

さらに、異なる食事時間帯でのチップの傾向も調査できます:

# 時間帯ごとの平均チップを示す棒グラフを作成 sns.barplot(data=tips, x="time", y="tip")

出力:

このプロットは、ランチとディナーサービス間のチップの挙動の違いを明らかにしています。各バーの高さはその時間帯の平均チップ額を表し、誤差棒はチップの挙動の変動性を示しています。このような可視化は、パターンを簡単に見つけてグループを一目で比較するのに役立ちます。

これらの基本的な棒グラフは、より複雑な可視化の基盤となります。次のセクションでは、これらのプロットを色、グループ化、およびその他のカスタマイズを使用してより情報豊かで視覚的に魅力的な可視化に拡張する方法を見ていきます。

カスタマイズでバープロットを強化する

バープロットにビジュアルエンハンスメントを追加することで、データをより魅力的で理解しやすくすることができます。tipsデータセットを使用して、バープロットをカスタマイズするさまざまな方法を見てみましょう。

バープロットに色を追加する

Seabornは、バープロットに色を追加するためのいくつかの方法を提供しており、これにより視覚的に魅力的で情報豊かなものにすることができます。すべてのバーに単一の色を使用するか、色分けされたグループを作成することができます。

colorパラメータはすべてのバーに単一の色を設定しますが、paletteでは、データが複数のグループを持つ場合にカラースキームを指定できます。 Seabornには、さまざまな種類のデータに適した多くの組み込みカラーパレットが付属しています。

以下に示すように、colorパラメータを使用して単一の色で簡単な棒グラフを作成できます。

# データセットが読み込まれていない場合は、tipsデータセットを読み込んでください import seaborn as sns tips = sns.load_dataset("tips") # 単一色の棒グラフ sns.barplot(data=tips, x="day", y="tip", color="skyblue")

出力:

パレットパラメータを使用して複数の色で棒グラフを作成できます。

# データセットが読み込まれていない場合は、tipsデータセットを読み込んでください import seaborn as sns tips = sns.load_dataset("tips") # 異なるカラーパレットを使用 sns.barplot(data=tips, x="day", y="tip", palette="Set2")

出力:

複数の列を持つSeabornの棒グラフ

Seabornの棒グラフの最も強力な機能の1つは、複数の変数間の関係をhueパラメータを使用して表示できることです。これにより、比較がしやすいグループ化された棒が作成されます。

下記のように、hueパラメータを使用して、両日と食事時間を比較しましょう:

# まだtipsデータセットを読み込んでいない場合は読み込む import seaborn as sns tips = sns.load_dataset("tips") # 日付と時間ごとのチップを示すグループ化された棒グラフを作成 sns.barplot( data=tips, x="day", y="tip", hue="time" )

出力:

上記のプロットには、昼食用と夕食用の2本の棒が表示されます。このグループ化により、チップが日ごとにどのように異なるかだけでなく、食事時間ごとにどのように異なるかも見ることができます。

Seabornの積み上げ棒グラフの作成

積み上げ棒グラフは、異なるカテゴリの構成を示すのに優れています。Seabornには直接的な積み上げ棒グラフの機能はありませんが、matplotlibを組み合わせて効果的な積み上げ可視化を作成することができます。

このアプローチは、Seabornの統計機能を活用しながら、matplotlibの積み上げ機能を使用しています。たとえば、tipsデータセットでは、異なる日において喫煙者と非喫煙者の間でどのようにチップが分布しているかを見てみましょう。

まず、可視化のために必要なライブラリをインポートします:

# 必要なライブラリのインポート import seaborn as sns import matplotlib.pyplot as plt import numpy as np

次に、レストランのチップ情報を含むデータセットを読み込みます:

# tipsデータセットを読み込む tips = sns.load_dataset("tips")

私たちは、可視化用に適切な寸法を持つ図を作成します:

# 図と軸を作成 plt.figure(figsize=(10, 4))

次に、異なる日にわたって喫煙者と非喫煙者の平均チップを計算します:

# 積み上げの値を計算 # 喫煙者をフィルタリングし、日にちごとにグループ化して平均チップを取得 smoker_means = tips[tips['smoker']=='Yes'].groupby('day')['tip'].mean() # 非喫煙者をフィルタリングし、日にちごとにグループ化して平均チップを取得 non_smoker_means = tips[tips['smoker']=='No'].groupby('day')['tip'].mean()

次に、以下に示すように積み上げ棒の基本パラメータを設定します:

# matplotlibを使用して積み上げ棒をプロット days = smoker_means.index width = 0.8

次に、非喫煙者向けの積み上げ棒の下層を作成します:

# 下層の棒を作成(非喫煙者) plt.bar(days, non_smoker_means, width, label='Non-smoker', color=sns.color_palette()[0])

喫煙者のチップの上層を追加します:

# 上層の棒を作成(喫煙者) plt.bar(days, smoker_means, width, bottom=non_smoker_means, label='Smoker', color=sns.color_palette()[1])

Seabornのスタイリングを使用して、グリッド線のないクリーンなスタイルを設定します:

# Seabornのスタイリングを追加 sns.set_style("white")

最後に、完成した積み上げ棒グラフを表示します:

# プロットを表示 plt.show()

出力:

結果のプロットでは、各日の非喫煙者のチップの上に積まれた喫煙者の平均チップが表示され、両グループの合計チップとそれぞれの貢献を比較することが容易になります。

この回避策により、以下を実現できます:

  • Seabornの魅力的なビジュアルスタイルを維持
  • 構成を示すために棒を積み上げる
  • 可視化の統計的性質を維持
  • 一貫性のためにSeabornのカラーパレットを使用

高度な機能とヒント

基本的な内容とカスタマイズをカバーしたので、情報を追加して専門的な見栄えをするためのいくつかの高度な機能について見ていきましょう。これらの高度な技術を実証するために引き続きtipsデータセットを使用します。

棒グラフに注釈を付ける

棒グラフに値のラベルを追加すると、視覚化がより正確で情報量が増します。各棒の上に正確なチップの値を表示する棒グラフを作成しましょう。

まず、ライブラリをインポートしてデータを準備しましょう:

# 必要なライブラリをインポート import seaborn as sns import matplotlib.pyplot as plt # tipsデータセットを読み込んで準備 tips = sns.load_dataset("tips")

統計値を含む棒グラフを作成します:

# 基本的な棒グラフを作成 ax = sns.barplot(data=tips, x="day", y="tip”, errorbar=None) # Create barplot and store the axes object for annotations

次に、各棒の上に値のラベルを追加します:

# 各棒の高さを取得 bars = ax.containers[0] # Get the bar container object heights = [bar.get_height() for bar in bars] # Extract height of each bar # 各棒の上にテキスト注釈を追加 for bar, height in zip(bars, heights): # Loop through bars and heights together ax.text( bar.get_x() + bar.get_width()/2., # X position (center of bar) height, # Y position (top of bar) f'${height:.2f}', # Text (format as currency) ha='center', # Horizontal alignment va='bottom' # Vertical alignment )

出力:

軸とスケールの管理

棒グラフを作成する際に、軸を調整することでデータをより読みやすく、効果的にすることができます。Seabornの関数を使用して軸の制限、ラベル、目盛りをカスタマイズする方法を見てみましょう。

まず、ライブラリをインポートして、視覚化に必要なデータセットを読み込みます:

# 必要なライブラリをインポート import seaborn as sns # データセットを読み込んで準備します tips = sns.load_dataset("tips")

カスタムラベルと曜日の順序付きの棒グラフを作成できます。orderパラメーターを使用すると、x軸にどのように曜日を配置したいかを指定できます。

# 軸ラベル付きの棒グラフを作成します ax = sns.barplot( data=tips, x="day", y="tip", order=['Thur', 'Sat', ‘Fri', 'Sun'] # Set custom order for days )

プロットをより情報豊かにするために、setメソッドを使用して両軸に記述ラベルを追加できます。

# 記述軸ラベルを設定します ax.set( xlabel='Day of Week', ylabel='Average Tip ($)' )

可視化を微調整するために、特定の制限と目盛りを設定できます。ylimパラメーターはy軸の範囲を制御し、xticksおよびyticksは、目盛りを正確にどこに配置したいかを定義できます。

# 軸の制限と目盛りをカスタマイズします ax.set( ylim=(0, 5), # Set y-axis range from 0 to 5 xticks=range(4), # Set x-axis tick positions yticks=[0, 1, 2, 3, 4, 5] # Set specific y-axis tick values )

これらの変更をすべてグラフに取り込むには、一度に実行する必要があります。以下にコード全体を示します:

# 必要なライブラリをインポート import seaborn as sns # tipsデータセットを読み込み、準備する tips = sns.load_dataset("tips") # 軸ラベルを持つ棒グラフを作成する ax = sns.barplot( data=tips, x="day", y="tip", order=['Thur', 'Sat', 'Fri', 'Sun'] # Set custom order for days ) # 記述的な軸ラベルを設定する ax.set( xlabel='Day of Week', ylabel='Average Tip ($)' ) # 軸の制限と目盛りをカスタマイズする ax.set( ylim=(0, 5), # Set y-axis range from 0 to 5 xticks=range(4), # Set x-axis tick positions yticks=[0, 1, 2, 3, 4, 5] # Set specific y-axis tick values )

出力:

結果のプロットは、日ごとのチップを明確なラベル、適切なスケール、そして整理された目盛で表示し、データを読み取りやすく解釈しやすくしています。

誤差棒の組み込み

誤差棒は、データの不確実性や変動を可視化するのに役立ちます。Seabornでは、信頼区間や標準偏差などの誤差棒を追加するためのさまざまなオプションが提供されています。

まず、ライブラリをインポートし、可視化に必要なデータセットを読み込みます:

# 必要なライブラリをインポート import seaborn as sns # tipsデータセットを読み込んで準備する tips = sns.load_dataset("tips")

Seabornはデフォルトで95%信頼区間を表示します。 ‘errorbar’パラメータを使用して、異なる種類の統計的推定値を表示できます:

# 信頼区間付きの棒グラフを作成 ax = sns.barplot( data=tips, x="day", y="tip", errorbar="ci", # Show confidence interval capsize=0.1 # Add small caps to error bars )

出力:

信頼区間の代わりに標準偏差を表示することもでき、データのばらつきを視覚化するのに役立ちます:

# 標準偏差に切り替える ax = sns.barplot( data=tips, x="day", y="tip", errorbar="sd", # Show standard deviation capsize=0.1 # Add small caps to error bars )

出力:

時には、すっきりとした見た目のためにエラーバーを完全に削除したいこともあります:

# エラーバーなしの棒グラフを作成する ax = sns.barplot( data=tips, x="day", y="tip", errorbar=None # Remove error bars )

出力:

結果のプロットは、異なるエラーバータイプが、週の異なる日における私たちのティップデータの変動性を理解するのにどのように役立つかを示しています。

Seaborn棒グラフの実用的な応用

棒グラフはデータ可視化において多用途なツールであり、異なるカテゴリ間で値を比較したり、複数の変数を同時に分析したりする必要がある場合に特に役立ちます。Seaborn棒グラフが優れている2つの一般的な応用例を見てみましょう。

Seabornの棒グラフは、特に異なるグループ間でメトリクスを分析する際にカテゴリデータのパターンを明らかにするのに優れています。中央傾向と不確実性の両方を示すことで、棒グラフはカテゴリ間の有意な違いを特定するのに役立ちます。

これにより、顧客行動、製品パフォーマンス、または調査回答など、異なるグループ間で値を比較する必要がある場合に理想的です。

複数の変数の比較

分析に複数の要因が関与する場合、Seabornの棒グラフはデータ内の複雑な関係を強調することができます。グループ化(hue)や積み上げなどの機能を使用することで、異なる変数を同時に比較し、データの異なる側面間のパターンや相互作用を見つけやすくなります。

結論

Seabornの棒グラフは、シンプルさと統計的洞察のバランスが取れています。このライブラリの直感的な構文と堅牢な統計機能が組み合わさったことで、データ可視化のための必須ツールとなっています。基本的なカテゴリ比較から高度なグループ化された可視化まで、棒グラフはデータパターンを効果的に明らかにし、伝えるのに役立ちます。

データ可視化スキルを向上させる準備はできていますか?次に探索すべき内容はこちらです:

Seabornのスキルを次のレベルに引き上げたいですか? Seabornを使用した中級データ可視化コースに登録してください。

Source:
https://www.datacamp.com/tutorial/seaborn-barplot