【发布时间】:2021-10-12 08:44:33
【问题描述】:
使用四分位规则替换具有上下边界的异常值时遇到问题,内核返回错误消息“必须指定轴 = 0 或 1”
定义四分位规则函数用上下边界替换异常值的代码如下:
def iqr(df):
for col in df.columns:
if df[col].dtype != object:
Q1 = df[col].quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
S = 1.5*IQR
LB = Q1 - S
UB = Q3 + S
df[df > UB] = UB
ddf[df < LB] = LB
else:
break
return df
dataframe 是 boston,可以从 scikit learn 加载
from sklearn.datasets import load_boston
df = pd.DataFrame(load_boston().data)
df.columns = boston.feature_names
df
然后,我使用该函数将数值属性异常值替换为上限或下限
iqr(df)
但结果是值错误
ValueError: Must specify axis=0 or 1
寻求帮助,谢谢!
【问题讨论】:
-
错误信息多行吗?包含它们可能会有所帮助,因为它们通常会确定代码的哪一行是造成问题的原因。也就是说,您的代码中似乎有几个拼写错误,因此您可以输入一些 print() 语句来查看它认为它在做什么。特别是我对 Q3 线持怀疑态度,它可能需要 df[col]。