マスクされた値と NaN 値のプロット

Beginner

This tutorial is from open-source community. Access the source code

はじめに

データ可視化では、プロットする必要がある欠損データに遭遇することがよくあります。このチュートリアルでは、Matplotlib を使って欠損値を持つデータをプロットする方法を学びます。3 つの方法を検討します:不要なデータポイントを削除する方法、ポイントをマスクする方法、および値を NaN に設定する方法。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習します。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

このチュートリアルで使用するライブラリをインポートする必要があります。Matplotlib と NumPy を使用します。

import matplotlib.pyplot as plt
import numpy as np

プロット用のデータを作成する

NumPy を使ってプロット用のデータを作成します。-π/2 からπ/2 の間の 31 個のデータポイントを生成し、これらの値の 3 乗の余弦を計算します。

x = np.linspace(-np.pi/2, np.pi/2, 31)
y = np.cos(x)**3

ポイントを削除する

y > 0.7 のポイントを削除します。残ったポイントのみを含む新しい x 配列と y 配列を作成します。

x2 = x[y <= 0.7]
y2 = y[y <= 0.7]

ポイントをマスクする

マスクされた配列を使って、y > 0.7 のポイントをマスクします。マスクされた値を持つ新しい y 配列を作成します。

y3 = np.ma.masked_where(y > 0.7, y)

NaN に設定する

y > 0.7 の箇所を NaN に設定します。NaN 値を持つ新しい y 配列を作成します。

y4 = y.copy()
y4[y3 > 0.7] = np.nan

データをプロットする

4 つのデータセットすべてを、それらを区別するために異なるマーカーと色を使ってプロットします。

plt.plot(x*0.1, y, 'o-', color='lightgrey', label='No mask')
plt.plot(x2*0.4, y2, 'o-', label='Points removed')
plt.plot(x*0.7, y3, 'o-', label='Masked values')
plt.plot(x*1.0, y4, 'o-', label='NaN values')
plt.legend()
plt.title('Masked and NaN data')
plt.show()

プロットを解釈する

結果として得られるプロットには、異なる色とマーカーの 4 つの線があります。最初の線(薄灰色)はマスクなしの元のデータを表しています。2 番目の線(オレンジ色)は不要なポイントが削除されたデータを表しています。3 番目の線(緑色)はマスクされた値を持つデータを表しています。4 番目の線(青色)は NaN 値を持つデータを表しています。このプロットは、異なる方法を使って欠損データを視覚化できる方法を示しています。

まとめ

このチュートリアルでは、Matplotlib を使って欠損値を持つデータをプロットする方法を学びました。不要なデータポイントを削除する方法、ポイントをマスクする方法、値を NaN に設定する方法の 3 つの方法を検討しました。NumPy を使ってプロットするデータを作成し、異なるマーカーと色を使ってデータセットを区別しました。また、欠損データを視覚化する異なる方法を理解するために、結果のプロットを解釈しました。