Statistics 在均匀分布数据中寻找异常值

Statistics 在均匀分布数据中寻找异常值,statistics,outliers,Statistics,Outliers,我的数据集有两列:类别和价格。价格列具有均匀分布的数据。我想从每个类别的价格列中找出异常值 Category Price<br> A &emsp;&emsp;&emsp;5<br> A &emsp;&emsp;&emsp;12<br> A &emsp;&emsp;&emsp;14<br> A &emsp;&emsp;&emsp;15<br&

我的数据集有两列:类别和价格。价格列具有均匀分布的数据。我想从每个类别的价格列中找出异常值

Category     Price<br>
A &emsp;&emsp;&emsp;5<br>
A &emsp;&emsp;&emsp;12<br>
A &emsp;&emsp;&emsp;14<br>
A &emsp;&emsp;&emsp;15<br>
A &emsp;&emsp;&emsp;22<br>
B &emsp;&emsp;&emsp;100<br>
B &emsp;&emsp;&emsp;2000<br>
B &emsp;&emsp;&emsp;3000<br>
B &emsp;&emsp;&emsp;4000<br>
B &emsp;&emsp;&emsp;9500<br>
类别价格
A&emsp&emsp&emsp;5
A&emsp&emsp&emsp;12
A&emsp&emsp&emsp;14
A&emsp&emsp&emsp;15
A&emsp&emsp&emsp;22
B&emsp&emsp&emsp;100
B&emsp&emsp&emsp;2000年
B&emsp&emsp&emsp;3000
B&emsp&emsp&emsp;4000
B&emsp&emsp&emsp;9500
我试过IQR,但它不能提供准确的结果


我希望对于A类,它应该给出5和22作为离群值,对于B类,离群值应该是100和9500,您可能需要将数据帧分为A类和B类

dfA = df.loc[df['Category'] == 'A']
dfB = df.loc[df['Category'] == 'B']
dfAquantile = dfA['Price'].quantile(0.25)
...

IQR的结果是什么?你被困在哪里?在一个线性样本中检测异常值是一个有很好证明的问题,有许多语言的解决方案。