所以我试图通过创建一个函数来删除异常值:
def remove_outlier_IQR(data):
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
Inter_Q = Q3-Q1
df_final = [~((data<(Q1 - 1.5*Inter_Q)) | (data>(Q3 + 1.5*Inter_Q)))]
return df_final
然后我将异常值删除到带有异常值的指定列上。
df_outlier_removed=remove_outlier_IQR(df[["Umur","Skor Belanja (1-100)"]])
df_outlier_removed.dropna(axis=0, inplace=True)
df_outlier_removed
但是,它返回错误为
AttributeError: 'list' object has no attribute 'dropna'
最佳答案
您有一个列表,并且在整个函数中将其保留为列表。如果您想使用 DataFrame.dropna() 那么这对您有用:
def remove_outlier_IQR(data):
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
Inter_Q = Q3-Q1
list_final = [~((data<(Q1 - 1.5*Inter_Q)) | (data>(Q3 + 1.5*Inter_Q)))]
df_final = pd.DataFrame(list_final)
return df_final
pd.DataFrame() 在退出函数之前将列表转换为 DataFrame。
关于python - 属性错误: 'list' object has no attribute 'dropna' (outlier),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73151888/