Eu tenho um script python que cria uma lista de listas de tempo de atividade do servidor e dados de desempenho, onde cada sub-lista (ou 'linha') contém estatísticas de um cluster específico. Por exemplo, bem formatado, é algo como isto:
------- ------------- ------------ ---------- -------------------
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)...
Portanto, em forma de lista, pode parecer com:
[[ams-a,98.099,1012,678,91],[bos-a,98.099,1111,12,91],...]
Minha pergunta:
- Qual é a melhor maneira de determinar os valores discrepantes em cada coluna? Ou os discrepantes não são necessariamente a melhor maneira de atacar o problema de encontrar 'maldade'?
Nos dados acima, eu definitivamente gostaria de saber sobre bos-be ord-b, bem como ams-a, pois a taxa de erro é muito alta, mas os outros podem ser descartados. Dependendo da coluna, uma vez que maior não é necessariamente pior nem menor, estou tentando descobrir a maneira mais eficiente de fazer isso. Parece que numpy é mencionado muito nesse tipo de coisa, mas não sei por onde começar (infelizmente, sou mais administrador do sistema do que estatístico ...). Quando perguntei no Stack Overflow, alguém mencionou o uso da função percentual de pontuação do numpy e jogou algo acima do percentil 99 - isso parece uma boa idéia?
(Publicado em crossoverflow, aqui: /programming/4606288 )