pandas 通过从列中删除异常值来创建新的 Dataframe

mm9b1k5b  于 2022-11-20  发布在  其他
关注(0)|答案(2)|浏览(116)

我正在删除离群值教程,但它很困惑我时,这个循环不能正常工作:

target = df['ConvertedComp']
mean = target.mean()
sd = target.std()
for x in target:
    z_score = (x-mean)/sd
    if np.abs(z_score) > 3:
        selected_df = df[df.ConvertedComp != x]

还有什么方法可以有效地创建新的 Dataframe 而不产生离群点?谢谢!希望我能学到一些新的东西。

mqkwyuun

mqkwyuun1#

您可以尝试以下代码来选择从ConvertedComp列计算出的z_score小于或等于3的行。

mask = df['ConvertedComp'].sub(df['ConvertedComp'].mean()).div(df['ConvertedComp'].std()).abs().le(3)

df = df[mask]
x9ybnkn6

x9ybnkn62#

以下是对我有效的方法。

  • (注意:课程助理的答案也可以在课程论坛上找到。)*

计算下四分位数。

lower = d_q1-(1.5*IQR)

print("Lower: ", lower)

计算上四分位数。

upper = d_q3+(1.5*IQR)

print("Upper: ", upper)

通过创建一个新的df来删除下限和上限异常值。

df2 = [(df['ConvertedComp'] < lower) | (df['ConvertedComp'] > upper)]

将离群值更改为“na”以删除其数值数据。

(这将使它们不在可视化和value_counts()中。)
import numpy as np
df[df2] = np.nan

相关问题