【Pandas】.plot.densityでカーネル密度推定プロットを作成する

Pandas
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Pandasは、Pythonでデータ分析を行うための強力なライブラリです。その中でも、.plotメソッドは、データフレームから簡単にグラフを作成できる便利な機能です。今回は、.plot.densityメソッドを使って、カーネル密度推定プロットを作成する方法を解説します。

カーネル密度推定プロットとは?

カーネル密度推定プロットは、データの確率密度関数を推定して滑らかな曲線で表示するグラフです。ヒストグラムのようにデータの分布を視覚化する方法ですが、ヒストグラムよりも滑らかで、データの分布をより正確に表現することができます。

Wikipedia
カーネル密度推定

.plot.densityメソッドのシグネチャ

Python
DataFrame.plot.density(bw_method=None, ind=None, **kwargs)

パラメータ:

  • bw_method: バンド幅を指定する方法。数値、str、またはcallableを指定できます。デフォルトはNoneで、scipyのgaussian_kde関数で推定されます。
  • ind: x軸の値を指定する配列。デフォルトはNoneで、自動的に決定されます。
  • kwargs: その他のキーワード引数。Matplotlibのplot()関数に渡されます。

kwargsでよく使うパラメータ:

  • figsize: グラフのサイズをタプル(幅, 高さ)で指定します。
  • title: グラフのタイトルを指定します。
  • xlabel: x軸のラベルを指定します。
  • ylabel: y軸のラベルを指定します。
  • grid: Trueに設定するとグリッド線を表示します。
  • xlim: x軸の範囲をタプル(最小値, 最大値)で指定します。
  • ylim: y軸の範囲をタプル(最小値, 最大値)で指定します。

プログラム例

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Results': [70, 80, 90, 60, 75, 85, 95, 65, 70, 80, 90, 75, 85, 95]
}
df = pd.DataFrame(data)

# カーネル密度推定プロットの作成
df['Results'].plot.density(figsize=(8, 6), title='Exam Results')
plt.xlabel('Points')
plt.ylabel('Density')
plt.show()

解説:

  1. pandasmatplotlib.pyplotをインポートします。
  2. サンプルデータを作成し、DataFrameに格納します。
  3. df['試験結果'].plot.density()メソッドでカーネル密度推定プロットを作成します。
    • figsize=(8, 6)でグラフのサイズを指定します。
    • title='試験結果の分布'でグラフのタイトルを指定します。
  4. plt.xlabel()でx軸のラベルを指定します。
  5. plt.ylabel()でy軸のラベルを指定します。
  6. plt.show()でグラフを表示します。

カスタマイズ例

Python
import pandas as pd
import matplotlib.pyplot as plt

# サンプルデータの作成
data = {
    'Results': [70, 80, 90, 60, 75, 85, 95, 65, 70, 80, 90, 75, 85, 95]
}
df = pd.DataFrame(data)

# カーネル密度推定プロットの作成
df['Results'].plot.density(figsize=(8, 6), 
                             title='Exam Results',
                             bw_method=0.5,  # バンド幅を指定
                             xlim=(50, 100),  # x軸の範囲を指定
                             grid=True  # グリッド線を表示
                            )
plt.xlabel('Points')
plt.ylabel('Density')
plt.show()

解説:

  • bw_method=0.5でバンド幅を0.5に設定しています。
  • xlim=(50, 100)でx軸の範囲を50から100に指定しています。
  • grid=Trueでグリッド線を表示しています。

このように、kwargsで様々なパラメータを指定することで、グラフをカスタマイズすることができます。

参考になるWEBサイト

次回:

次回は、.plot.hexbinメソッドを使ってビニングプロットを作成する方法を解説します。お楽しみに!

今回も少しだけPRです。

Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。

「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。

最後まで読んでいただきありがとうございます。73

コメント

タイトルとURLをコピーしました