我有一个 python 脚本,它创建服务器正常运行时间和性能数据列表的列表,其中每个子列表(或“行”)包含特定集群的统计信息。例如,很好地格式化它看起来像这样:
------- ------------- ------------ ---------- -------------------
Cluster %Availability Requests/Sec Errors/Sec %Memory_Utilization
------- ------------- ------------ ---------- -------------------
ams-a 98.099 1012 678 91
bos-a 98.099 1111 12 91
bos-b 55.123 1513 576 22
lax-a 99.110 988 10 89
pdx-a 98.123 1121 11 90
ord-b 75.005 1301 123 100
sjc-a 99.020 1000 10 88
...(so on)...
所以在列表形式中,它可能看起来像:
[[ams-a,98.099,1012,678,91],[bos-a,98.099,1111,12,91],...]
我的问题:
- 确定每列中异常值的最佳方法是什么?或者异常值不一定是解决“坏处”问题的最佳方法?
在上面的数据中,我肯定想知道 bos-b 和 ord-b,还有 ams-a,因为它的错误率很高,但其他的可以丢弃。取决于列,因为更高不一定更糟,也不一定更低,我试图找出最有效的方法来做到这一点。似乎 numpy 被提到了很多这类东西,但不知道从哪里开始(遗憾的是,我比统计学家更像是系统管理员......)。当我在 Stack Overflow 上询问时,有人提到使用 numpy 的 scoreatpercentile 函数并丢弃超过 99% 的任何东西——这看起来是个好主意吗?
(从stackoverflow交叉发布,这里:https ://stackoverflow.com/questions/4606288 )