Pandas 使用分位数删除DataFrame中的异常值
在本文中,我们将介绍如何使用Pandas的percentiles方法从DataFrame中删除异常值。
首先,让我们定义什么是异常值。异常值是指与数据集中其他值显著不同的数据点。这些值可能是由于错误记录或测量方法导致的,或者它们可能表示了真实的但罕见的事件。在数据分析中,异常值可能会导致一些问题,如估计数据的中心趋势和分布,他们也可能给建模和预测带来挑战。
接下来,我们将介绍如何使用Pandas内置的quantile方法来确定阈值,然后删除超出这个范围的值。
假设我们有一个包含一些随机数字的DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))
我们现在可以使用DataFrame的quantile方法来计算在DataFrame中给定列的0.05和0.95分位数:
q_low = df["A"].quantile(0.05)
q_hi = df["A"].quantile(0.95)
在这个例子中,我们计算了列“A”的0.05和0.95分位数。这些值将被用作异常值的边界,也可以使用其他分位数,如0.01和0.99,具体取决于数据集和应用场景。
现在,我们可以使用这些阈值来选择数据集中超出这个范围的值。以下代码行将删除它们:
df_filtered = df[(df["A"] < q_hi) & (df["A"] > q_low)]
这将为我们提供只包含正常值的DataFrame。我们也可以选择在过滤后保留异常值,以便进一步调查和分析。
df_filtered = df[~((df["A"] < q_low) | (df["A"] > q_hi))]
在这个例子中,我们使用了”~”运算符来选择不满足“&”操作中指定的条件的值。
阅读更多:Pandas 教程
总结
使用DataFrame的分位数方法可以很容易地从数据集中删除异常值。确定一个合适的阈值通常需要一些领域知识和一些实验。在删除异常值之前,建议仔细检查数据并了解异常值的原因。如果你要继续使用异常值,请确保在你的数据分析和建模中注意到它们。
极客教程