簡體   English   中英

通過從列中刪除異常值創建一個新的 dataframe

[英]Create a new dataframe by removing the outliers from the column

我正在努力刪除離群值教程,但是當這個循環不能正常工作時,我很困惑:

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 嗎? 謝謝你。 希望我能學到新東西。

您可以嘗試對 select 行執行以下代碼,其中從ConvertedComp列計算的 z_score 小於或等於 3。

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

df = df[mask]

這對我有用。

(注意:課程論壇上也提供了課程助理對此答案的變體。)

計算下四分位數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM