データ分析の現場では、「平均値」や「最大・最小値」だけでは見えてこない情報が数多く存在します。同じ平均を持つデータでも、ばらつき方や偏りによって、ビジネス上の解釈や意思決定は大きく変わるからです。こうしたデータの“分布”を直感的に理解する手段として、多くの分析者に活用されているのが KDE(Kernel Density Estimation:カーネル密度推定)プロットです。
KDEプロットは、ヒストグラムをよりなめらかにし、「データがどの値に集中しているのか」「裾が長い分布なのか」といった特徴を視覚的に把握できるのが強みです。Python の可視化ライブラリ Seaborn を使えば、比較的少ないコードで美しく、かつ解釈しやすい KDE プロットを作成できます。
本記事では、Seaborn に公式サンプルとして用意されている サンプルデータを題材に、一連の KDE プロットの描き方と、その読み取り方を丁寧に解説していきます。
日次・月次の数値レポートを扱う方、顧客データや業務データの傾向を把握したい方、そして「ヒストグラムの次に何を使えばよいか迷っている」分析初学者の方にとって、本記事が KDE プロットを実務で使いこなす第一歩になれば幸いです。
KDEとは
KDEプロットがどのように動作するかをステップ毎に見ていきます。
6つのデータを軸の上にプロットしてみます。

それぞれのデータ上にKernel=小さな山を置いていきます。


それぞれのKernelを合わせていくと・・・



これを最後まで繰り返すと、

このようにKernel(小さな山)のDensity(密度、厳密には確率密度)をEstimation(なめらかに推定)するのでKDEと呼びます。
単変量のKDEプロット
まずサンプルデータの確認をします。
import seaborn as sns
from matplotlib import pyplot as plt
sns.set_theme()
cars = sns.load_dataset('mpg').dropna()
cars.shape
(392, 9)
データを確認してみます。
cars.head()

ちなみに、Seabornの始め方については、以下の記事を参考にしてください。
Seaborn入門:Pythonで始めるデータ可視化 – Lean Data Office
早速ですがhorsepower列をKDEでプロットしてみます。
sns.kdeplot(cars.horsepower);

horsepowerが80付近で大きな山なりになっていることから、そこにデータを密集していることが推定されます。
また、以下のコードで
sns.kdeplot(cars.horsepower, shade=True);

影をつけることができます。
帯域幅を調整する
帯域幅の調整はKDEの見た目に大いに影響します。
bw_adjustは帯域を表す引数で、これを小さくすると、
sns.kdeplot(cars.horsepower, bw_adjust=0.5);

sns.kdeplot(cars.horsepower, bw_adjust=0.1);

帯域幅を短く設定でき、よりグラフが詳細になります。
逆に大きくすると、よりなだらかになります。
sns.kdeplot(cars.horsepower, bw_adjust=1.5);

二変量のKDEプロット
Seabornのkdeplotは2つの変数(xとy)を渡すと二変量のKDEを描けます。
新たなデータで試してみます。
penguins = sns.load_dataset("penguins")
sns.kdeplot(data=penguins, x='bill_depth_mm', y='bill_length_mm')

ここではペンギンのくちばし(bill)の厚さと長さをプロットしています。
また新たな変数をhue=で指定することも可能です。
sns.kdeplot(data=penguins, x='bill_depth_mm', y='bill_length_mm',hue='species')

Fillでの塗りつぶしも可能です。
sns.kdeplot(data=df, x='bill_depth_mm', y='bill_length_mm', hue='species', fill=True)

まとめ
本記事では、Seaborn の kdeplot() 関数を使って、カーネル密度推定(KDE)プロットを作成する方法を解説しました。KDE プロットは、データの分布をなめらかに可視化でき、ヒストグラムでは捉えにくい傾向を理解するのに役立ちます。
Seabornを用いたヒストグラムの描画については、以下の記事も参考にしてください。
数値のばらつきを可視化する:Seaborn ヒストグラムの基本 – Lean Data Office
KDE プロットは設定次第で見え方が大きく変わるため、目的に応じたパラメータ調整が重要です。本記事のコード例を参考にしながら、ぜひご自身のデータに合わせた可視化を試してみてください。