绘制屏蔽值和无效值(NaN)

Beginner

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

简介

在数据可视化中,经常会遇到需要绘制的缺失数据。在本教程中,我们将学习如何使用 Matplotlib 绘制带有缺失值的数据。我们将探索三种方法:去除不需要的数据点、屏蔽点以及将值设置为 NaN。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入所需库

我们需要导入本教程中将会用到的库。我们将使用 Matplotlib 和 NumPy。

import matplotlib.pyplot as plt
import numpy as np

创建用于绘图的数据

我们将使用 NumPy 创建用于绘图的数据。我们将在 -π/2 到 π/2 之间生成 31 个数据点,并计算这些值的立方的余弦值。

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

绘制数据

我们将使用不同的标记和颜色绘制所有四个数据集,以便区分它们。

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()

解读图表

最终生成的图表将有四条颜色和标记各不相同的线。第一条线(浅灰色)代表未进行屏蔽处理的原始数据。第二条线(橙色)代表已移除不需要的数据点后的数据。第三条线(绿色)代表带有屏蔽值的数据。第四条线(蓝色)代表带有无效值(NaN)的数据。此图表展示了如何使用不同方法将缺失数据可视化。

总结

在本教程中,我们学习了如何使用 Matplotlib 绘制带有缺失值的数据。我们探讨了三种方法:移除不需要的数据点、屏蔽数据点以及将值设置为无效值(NaN)。我们使用 NumPy 创建了用于绘制的数据,并使用不同的标记和颜色来区分数据集。我们还解读了生成的图表,以了解可视化缺失数据的不同方法。