Matplotlib 找到异常值

Matplotlib 找到异常值

在数据分析中经常会遇到异常值,即与其他观察值显著不同的数据点。为了防止它们对统计分析结果产生影响,识别和处理这些异常值是必不可少的。本技术博文将介绍如何从著名的Python数据可视化库Matplotlib中找到异常值。

安装和语法

流行的Python模块Matplotlib用于构建静态、动画和交互式可视化。可以使用Python软件包安装程序Pip来安装它。在终端中运行以下命令以安装Matplotlib −

pip install matplotlib

Matplotlib提供了多种方法来定位和显示数据的异常值。最常用的用于创建箱线图的方法是 boxplot() 函数,该函数接受下面提到的参数,并提供了大量的自定义选项。

plt.boxplot(data, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None)

步骤

  • 使用Matplotlib的boxplot()函数绘制数据的箱线图。

  • 箱线图中的箱体表示数据的四分位距(IQR),水平线表示中位数。

  • 通过将第一四分位数(Q1)除以第三四分位数(Q3)计算IQR(Q3)。使用以下公式估计离群值的上下界:上界=Q3+1.5IQR,下界=Q1-1.5IQR。

  • 离群值是指超出上下边界的观测值,可以通过箱线图识别。

  • annotate()函数允许您对离群值进行命名,并在图形中显示它们的值或索引。

示例1

import numpy as np
import matplotlib.pyplot as plt
# Generate random data
data = np.random.normal(size=100)
# Create boxplot
plt.boxplot(data)
# Show plot
plt.show()

使用NumPy的 random.normal() 函数,在此示例中,我们从正态分布中创建100个随机数据点。之后,我们使用boxplot()方法生成数据的箱线图,并使用show()函数显示它。结果图形显示了数据的分布,并将注意力集中在须线之外的任何异常值上。

输出

Matplotlib 找到异常值

示例2

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Generate sample data
np.random.seed(42)
data = pd.DataFrame(np.random.randn(100, 3), columns=['A', 'B', 'C'])

# Create boxplot
plt.boxplot(data['B'])

# Show plot
plt.show()

使用Pandas库构建一个名为data的DataFrame,包含100行和3列(A,B和C列)。使用NumPy库的np.random.randn()方法生成随机整数来填充DataFrame。然后,使用Matplotlib的plt.boxplot()方法绘制B列的箱线图,并展示结果图。

输出

Matplotlib 找到异常值

示例3

import seaborn as sns
import matplotlib.pyplot as plt
# Load data
tips = sns.load_dataset("tips")

# Create boxplot
sns.boxplot(x=tips["total_bill"])

# Show plot
plt.show()

在这个例子中,我们从Seaborn库的内置tips数据集中加载数据。然后,我们使用Seaborn库的boxplot()函数对数据中的特定列创建一个箱线图,并使用show()函数显示它。

输出

Matplotlib 找到异常值

import numpy as np
import matplotlib.pyplot as plt

# Generate random data
np.random.seed(123)
data = np.random.normal(size=50)

# Add outliers
data = np.concatenate([data, [6, -7, 8]])

# Create boxplot
fig, ax = plt.subplots()
ax.boxplot(data)

# Set title and labels
ax.set_title('Boxplot of Data')
ax.set_xlabel('Data')
ax.set_ylabel('Values')

#Calculate and print outliers
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)
outliers = [x for x in data if x < lower_bound or x > upper_bound]
print("Outliers:", outliers)

#Show plot
plt.show()

输出

Outliers: [6.0, -7.0, 8.0]

在这个例子中,我们首先使用NumPy的random.normal()方法从正态分布中生成50个随机数据点。然后我们添加了三个异常点到数据中,以演示boxplot()函数如何检测异常值。我们使用boxplot()函数创建数据的箱线图,并将图像和轴对象分别存储在变量figax中。我们使用轴对象的set_title()set_xlabel()set_ylabel()方法设置标题和坐标轴标签。

Matplotlib 找到异常值

为了计算异常值,首先使用NumPy的percentile()方法计算第一和第三四分位数(Q1和Q3)以及四分位距(IQR)。然后使用公式 lower_bound = Q1 - (1.5 * IQR)upper_bound = Q3 + (1.5 * IQR) 计算须的下界和上界。最后,我们使用列表推导打印位于须之外的异常值。

应用

在数据分析和可视化中,定位异常值是至关重要的一步。异常值可能是罕见或特殊事件、数据采集、输入或测量中的错误,或二者兼有。通过识别和有效处理异常值,我们可以确保统计研究和预测模型的准确性和可靠性。

结论

在这篇技术博客文章中,我们介绍了如何在Matplotlib中识别异常点,这是一个著名的Python数据可视化包。我们展示了如何绘制数据的箱线图,并使用四分位距方法来识别异常值。我们还给出了使用Matplotlib识别和显示数据中异常值的各种示例。通过采用这些方法,您可以确保数据分析和可视化项目的准确性和可靠性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程