数値のばらつきを可視化する: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
sns.histplot(data=tips, x="total_bill", hue='time', element='poly')
image
sns.histplot(data=tips, x="total_bill", hue='time', multiple='stack')
image

二変量ヒストグラム

スタイルの調整

まとめ

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