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

Python Matplotlibで箱ひげ図をプロットする際のNaN値の処理方法

PythonのMatplotlibで箱ひげ図(ボックスプロット)を描画する際、データにNaN(欠損値)が含まれていると、意図しない結果やエラーの原因になることがあります。本記事では、NaN値を適切に処理して箱ひげ図をプロットする方法を、具体的な手順とサンプルコードとともに解説します。

実装の手順

  • figureサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • データサンプル数と範囲を表す変数 N を初期化します。

  • ランダムなばらつき(spread)、中央のデータ(center)、外れ値の上限(flier high)・下限(flier low)を作成し、それらを連結したデータと、NaNを除去したフィルタリング済みデータを用意します。

  • boxplot() メソッドを使って箱ひげ図を作成します。

  • show() メソッドで図を表示します。

ポイント:NaN値の除去

ここで重要なのが data[~np.isnan(data)] の部分です。NumPyの isnan() 関数で各要素がNaNかどうかを判定し、否定演算子 ~ を組み合わせることで、NaN以外の要素だけを抽出できます。このフィルタリング済みデータを boxplot() に渡すことで、欠損値の影響を受けない正しい箱ひげ図が得られます。

サンプルコード

import matplotlib.pyplot as plt
import numpy as np

# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# データサンプル数
N = 10

# ランダムなばらつき
spread = np.random.rand(N)

# 中央のデータ
center = np.ones(N)

# 外れ値の上限・下限
fh = np.random.rand(N)+N
fl = np.random.rand(N)-N

# 連結データ
data = np.concatenate((spread, center, fh, fl), 0)
data[5] = np.NaN

# NaNを除去したデータ
filtered_data = data[~np.isnan(data)]

# 箱ひげ図をプロット
plt.boxplot(filtered_data)

plt.show()

出力結果

上記のコードを実行すると、次のような箱ひげ図が出力されます。

Python Matplotlibで箱ひげ図をプロットする際のNaN値の処理方法

  1. PythonのMatplotlibで3次元ラインプロットを作成する方法【サンプルコード付き解説】

    Matplotlibとは Matplotlibは、Pythonで最も広く利用されているデータ可視化ライブラリの一つです。データを可視化することは、大量の数値を直接読んだり複雑な計算を行ったりしなくても、データの中で何が起きているのかを直感的に把握できるようにするための重要なステップです。 また、定量的な洞察を効果的に伝える手段としても非常に役立ちます。Matplotlibは主に2次元プロットの作成に使用されますが、オブジェクト指向APIを備えているため、作成したグラフをPythonアプリケーションへ簡単に組み込むことが可能です。さらに、IPythonシェル、Jupyter Notebook、S

  2. PythonのopenpyxlでExcelグラフを作成する方法|棒グラフ作成をステップ解説

    この記事では、Pythonのopenpyxlモジュールを使ってExcelにグラフを作成する方法を解説します。テニス選手のグランドスラム優勝回数をサンプルデータとして、ゼロからExcelスプレッドシートを作成し、openpyxlで棒グラフを描画するまでの一連の手順を紹介します。 はじめに Microsoft Officeでは、Office 2007以降、より多くの行と列を扱えるようにするため、Excelシートに新しい拡張子「.xlsx」が導入されました。この変更により、ExcelファイルはZIP圧縮されたXMLベースのフォーマットへと移行しています。Microsoftのスプレッドシートは今やビ