离群值是一个数据项/对象,它明显偏离其余的(所谓的正常)对象。它们可能由测量或执行错误引起。离群点检测的分析被称为离群点挖掘。检测离群值的方法有很多,删除过程与从pandas的数据框中删除数据项相同。
离群值检测和删除
在这里,pandas数据框架用于更现实的方法,因为现实世界的项目需要检测数据分析步骤中出现的离群值,相同的方法可以用于列表和序列类型的对象。
# Importing
import sklearn
from sklearn.datasets import load_diabetes
import pandas as pd
import matplotlib.pyplot as plt
# Load the dataset
diabetics = load_diabetes()
# Create the dataframe
column_name = diabetics.feature_names
df_diabetics = pd.DataFrame(diabetics.data)
df_diabetics.columns = column_name
df_diabetics.head()
离群值可以使用可视化、在数据集上实现数学公式或使用统计方法来检测。下文将讨论所有这些问题。
离群值可视化
使用箱形图可视化离群值
它只需要一个简单的框和须就可以有效地捕获数据摘要。箱形图使用第25次、第50次和第75次采样总结了样本数据。人们可以通过查看数据集的箱形图来了解数据集(四分位数,中位数和离群值)。
# Box Plot
import seaborn as sns
sns.boxplot(df_diabetics['bmi'])
在上图中,可以清楚地看到,高于10的值是离群值。
# Position of the Outlier
import numpy as np
print(np.where(df_diabetics['bmi']>0.12))
输出
(array([ 32, 145, 256, 262, 366, 367, 405]),)
使用散点图可视化离群值
当您有成对的数值数据,并且因变量对每个阅读自变量有多个值时,或者当尝试确定两个变量之间的关系时,使用该方法。在利用散点图的过程中,也可以将其用于离群值检测。
要绘制散点图,需要两个变量以某种方式彼此相关。因此,这里使用的是“每个城镇的非零售业务面积比例”和“每10,000美元的全额财产税税率”,其列名分别为“INDUS”和“TAX”。
# Scatter plot
fig, ax = plt.subplots(figsize=(6, 4))
ax.scatter(df_diabetics['bmi'], df_diabetics['bp'])
# x-axis label
ax.set_xlabel('(body mass index of people)')