数値のばらつきを可視化する:Seaborn ヒストグラムの基本

Close-up image of a colorful column chart and pen symbolizing financial analysis.

データを分析していると、「平均値」や「中央値」だけでは見えてこない違和感に気づくことがあります。
同じ平均を持つデータでも、その中身をよく見ると、値が集中している場合もあれば、大きくばらついている場合もあります。こうした数値の散らばり方を理解することは、データの特徴を正しく捉えるための重要な第一歩です。

ヒストグラムは、数値データの分布を直感的に把握するための、もっとも基本的な可視化手法のひとつです。どのあたりに値が多いのか、極端に大きい(あるいは小さい)値が存在するのか、といった情報を、ひと目で確認することができます。

本記事では、Pythonの可視化ライブラリ Seaborn を使い、ヒストグラムを描く方法を解説します。
histplot 関数の基本的な使い方から、見た目を調整するための代表的なオプションまで、実例を交えながら順を追って見ていきます。

「数値のばらつきを感覚的に理解したい」「まずは分布を見るところから分析を始めたい」
そんな方に向けて、ヒストグラムの基本を丁寧に整理していきましょう。

Seabornの基本については、下の記事を参考に。

Seaborn入門:Pythonで始めるデータ可視化 – Lean Data Office

ヒストグラムの基本

tipsのデータセットを使います。

data=でtipsデータセットを使用し、x軸にtotal_billをプロットします。

tips = sns.load_dataset("tips")
sns.histplot(data=tips, x="total_bill")
image

y軸を指定すると、縦にプロットできます。

sns.histplot(data=tips, y="total_bill")
image

kde=で、KDEも同時にプロットできます。KDEの詳細は以下を参照ください。

データの分布をなめらかに見る:Seaborn KDEプロット – Lean Data Office

sns.histplot(data=tips, x="total_bill", kde=True)
image

bins=に引数を渡すと、ビンの数も明示的に調整が可能です。

sns.histplot(data=tips, x="total_bill", bins=30)
image

また、bins に境界値(ビンの区切り)をリストで指定することができます。

sns.histplot(data=tips, x="total_bill", bins=[10,20,40,50])
image

また、ビンの幅をX軸の値をベースに指定ができます。

sns.histplot(data=tips, x="total_bill", binwidth=10)
image

ビンを表示する範囲指定をbinrange=の引数で指定ができます。

sns.histplot(data=tips, x="total_bill", binrange=(20,40))
image

統計量とヒストグラム

stat=はY軸の計算方法を示します。

sns.histplot(data=tips, x="total_bill", stat='count')

‘count’はデフォルト表示ですので、見え方は変わりません。

image

Densityはヒストグラム全体の面積が 1 になるように正規化する方法です。

sns.histplot(data=tips, x="total_bill", stat='density')
image

カウントとヒストグラムの見え方は変わりませんが、Y軸の表示が変更になっているかと思います。

probabilityもヒストグラムの形状は変わりませんが、全体に対する割合を示します。

sns.histplot(data=tips, x="total_bill", stat='probability')
image

最後に累計(=cumulative)を説明します。わかりやすいように一部スタイルを設定していますが、ここではいったん気にせず表示方法の違いが把握できればOKです。

sns.histplot(data=tips, x="total_bill", stat='probability', fill=False,  element='step', cumulative=True)
image

類型表示によってどこまでで何パーセントかを一目で伝えることができます。

image

カテゴリ変数の扱い

hue=でカテゴリを表示させます。

sns.histplot(data=tips, x="total_bill", hue='time')
image

複数のカテゴリを色分けでヒストグラムで表示させることができました。

以下のコードでは、

sns.histplot(data=tips, x="total_bill", hue='time', element='step')
image

ステップ表示にてヒストグラムのアウトラインを表示させることができます。

またpolyによって、

sns.histplot(data=tips, x="total_bill", hue='time', element='poly')
image

棒ではなく輪郭線(ポリゴン)でヒストグラムを描画し重なっても両方の形が見えるように表示させることもできます。

下のコードでは、multiple=stackによって、

sns.histplot(data=tips, x="total_bill", hue='time', multiple='stack')
image

全体量とカテゴリ別の構成比を見える化できます。

また、multiple=’fill’によって、全体の割合(構成比)だけに注目したヒストグラムも描画できます。

sns.histplot(data=tips, x="total_bill", hue='time', multiple='fill')
image

二変量ヒストグラム

Seabornでは、二変量のヒストグラムを描画することも可能です。

まず、以下のサンプルデータセットを使用します。

penguins = sns.load_dataset("penguins")

y軸の指定を行い、histplot関数を呼びます。

sns.histplot(data=penguins, x='bill_length_mm', y='bill_depth_mm')
image

二変量がヒートマップのように表示されました。

しかし、y軸に変数を割り当てたことで、スケールがビンの大きさではなく色だけでしか判別できなくなりました。

cbar=Trueでカラーバーを追加するとよりヒートマップがわかりやすくなります。

sns.histplot(data=penguins, x='bill_length_mm', y='bill_depth_mm', cbar=True)
image

hue=によってカテゴリ表示も可能です

sns.histplot(data=penguins, x='bill_length_mm', y='bill_depth_mm', hue='species')
image

このヒートマップではそれぞれのペンギンの種のくちばしのサイズの傾向はわかりますが、二変量でカテゴリを追加すると、オーバーラップした部分が各カテゴリごとにどれくらいのスケールなのかを判別するのが難しくなります。

スケールを把握するために種別にヒートマップを活用したい場合に、y軸にhue=の値と同じくspeciesを割り当てると、色の濃淡でスケールを判別できます。

※このケースではくちばしの厚み(bill_depth_mm)を外していますので厳密には二変量とは言わないかもしれませんが参考まで。

sns.histplot(data=penguins, x=’bill_length_mm’, y=’species’, hue=’species’)

image

スタイルの調整

最後に使い勝手の良いスタイルを紹介します。

multiple=’dodge’で複数カテゴリを並列表示できます。

sns.histplot(data=penguins, x='species', hue='sex', multiple='dodge')
image

今は3つの種が隣り合わせになっていてギャップがないので、shrink=でより見やすく変更できます。

sns.histplot(data=penguins, x='species', hue='sex', multiple='dodge', shrink=0.8)
image

color=で色を明示的に変更することも可能です。

デフォルトでは、

sns.histplot(data=penguins, x='bill_length_mm')
image

color=で明示的に色を変更します。

sns.histplot(data=penguins, x='bill_length_mm',color='indigo')
image

fill=を指定し、塗りつぶしをなくすことも可能です。

sns.histplot(data=penguins, x='bill_length_mm',color='indigo', fill=False)
image

複数カテゴリを表示させているケースでは、

sns.histplot(data=penguins, x='species', hue='sex', multiple='dodge', shrink=0.8)
image

pallet=でカラーテーマを変更できます。

image

まとめ

本記事では、Seaborn の histplot を用いて、数値データのばらつきを可視化する基本的な考え方と使い方を整理しました。
ヒストグラムは、平均値や単一の代表値だけでは見えない分布の形・広がり・偏りを直感的に把握できる点が大きな強みです。

histplot では、ビン数の指定や正規化方法に加え、hue によるカテゴリ分割、multipleelement を使った表示方法の切り替えなど、目的に応じた柔軟な可視化が可能です。これにより、「データがどこに集中しているのか」「カテゴリ間で分布に違いがあるのか」といった問いに対して、視覚的に答えを示すことができます。

数値データを扱う際は、集計結果だけで判断するのではなく、まずヒストグラムで分布を確認することで、データの性質や違和感に気づきやすくなります。
ぜひ histplot を活用し、分析やレポートの初期段階でデータの全体像をつかむ習慣を取り入れてみてください。

筋トレとオートメーションが趣味。 モバイルアプリ個人開発者。 データ処理・可視化とレポートにハマり備忘録と情報共有のためにブログ開設し運営している。