我有一个df
中数字列的示例,其中有10个其他列(数字列和分类列):
Units
-12
4
4
5
1
5
12
6
34
6
7
12
745
我想应用以下公式:
Low outlier: q1-(1.5*iqr)
High outlier: q3+(1.5*iqr)
我知道在{
from scipy.stats import iqr
import numpy as np
q1=np.percentile(df.Units, 25)
q3=np.percentile(df.Units, 75)
mask = df['Units'].between(q1, q3, inclusive=True)
iqr = df.loc[mask, 'Units']
但是,计算上述公式时缺少两个步骤:
NaN
值:我不希望将它们从我的列中删除,而只是将它们从计算中排除李>低异常值:q1-(1.5*iqr)
高异常值:q3+(1.5*iqr)
我想说,也许可以使用between
或只是过滤低于/高于上述公式计算值的值
对
df.query
的延迟尝试,将NaN
从计算中排除,并将其保留在最终查询中:这给出了(希望的)预期结果:
相关问题 更多 >
编程相关推荐