Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibのボックスプロットからデータ(外れ値・箱・中央値・ひげ)を取得する方法

Matplotlibで作成したボックスプロットから、その内部データを取得したい場面はよくあります。本記事では、pandasのboxplot()メソッドを使い、外れ値(fliers)箱(boxes)中央値(medians)ひげ(whiskers)の各データを取り出す手順を、具体的なコード例とともに解説します。

ボックスプロットのデータを取得する手順

  1. 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  2. pandasを使ってデータフレームを作成します。
  3. データフレームの列からボックスプロットを作成します。このときreturn_type='both'を指定すると、図と各要素への参照を同時に受け取れます。
  4. ボックスプロットの外れ値中央値ひげのデータをそれぞれ取得します。
  5. 取得した情報をすべて出力します。
  6. 図を表示するには、show()メソッドを使用します。

コード例

import seaborn as sns
import pandas as pd
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df = pd.DataFrame(dict(age=[23, 45, 21, 15, 12]))
_, bp = pd.DataFrame.boxplot(df, return_type='both')
outliers = [flier.get_ydata() for flier in bp["fliers"]]
boxes = [box.get_ydata() for box in bp["boxes"]]
medians = [median.get_ydata() for median in bp["medians"]]
whiskers = [whisker.get_ydata() for whisker in bp["whiskers"]]

print("Outliers: ", outliers)
print("Boxes: ", boxes)
print("Medians: ", medians)
print("Whiskers: ", whiskers)

plt.show()

実行結果

Outliers: [array([45])]
Boxes: [array([15., 15., 23., 23., 15.])]
Medians: [array([21., 21.])]
Whiskers: [array([15., 12.]), array([23., 23.])]

結果の読み方

この例では、年齢データ [23, 45, 21, 15, 12] を可視化しています。出力結果から以下のことが読み取れます。

  • 外れ値(Outliers): 値「45」が四分位範囲から大きく外れているため、外れ値として検出されています。
  • 箱(Boxes): 第1四分位数(Q1)が「15」、第3四分位数(Q3)が「23」であり、この範囲にデータの半分が含まれます。
  • 中央値(Medians): 中央値は「21」です。
  • ひげ(Whiskers): 下側のひげは「15」から最小値「12」まで、上側のひげは「23」まで伸びています。

このように、return_type='both'で得られる辞書から各アーティストオブジェクトを取り出し、get_ydata()メソッドを呼び出すことで、ボックスプロットを構成する数値データをプログラム的に取得できます。統計量を後続の処理に利用したい場合に非常に便利な手法です。

  1. Matplotlibで3Dバー(3D棒グラフ)に凡例を追加する方法

    Matplotlibで3D棒グラフ(3Dバー)に凡例を追加したい場合、bar3d()メソッドでバーを描画し、legend()メソッドを使って凡例を配置します。この記事では、緑と赤の2種類の3Dバーを描画し、それぞれに凡例ラベルを付ける具体的な手順をサンプルコード付きで解説します。 実装の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 figure()メソッドで新しい図を作成します。 add_subplot()で projection=3d を指定し、3D描画用のAxesを追加します。 numpyを使って x3、y3、z3、dx、dy、dz の各データリス

  2. Matplotlibのプロットからデータを抽出する方法|get_xdata・get_ydataの使い方

    Matplotlibで作成したプロットから元のデータを取り出したい場合、get_xdata() メソッドと get_ydata() メソッドを使うことで簡単に実現できます。これらのメソッドは、プロットされたLine2DオブジェクトからX軸・Y軸のデータポイントをそれぞれ取得します。実行手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。numpy を使って y のデータポイントを作成します。y のデータポイントを color=red(赤色)・linewidth=5(線幅5)でプロットします。データ抽出の開始を示すメッセージを出力します。get_xdata() と