Método outliers()

Identifica valores discrepantes estatísticos em uma coluna numérica. Os valores discrepantes podem ser identificados para a coluna como um todo ou para grupos separados baseados em valores idênticos em uma ou mais colunas-chave.

Sintaxe

nome_dataframe.outliers(keys = ["coluna_chave", "...n"]|None, on = "coluna_numérica", distance = número_desvios_padrão, method = mean|median)

Parâmetros

Nome Descrição
keys = ["coluna_chave", "...n"] | None
  • coluna_chave a coluna-chave ou colunas usadas para agrupar os dados no dataframe

    Para cada grupo, é calculado o desvio padrão dos valores numéricos do grupo em coluna_numérica. O desvio padrão do grupo é usado como base para identificar valores discrepantes do grupo.

    Se você agrupar por mais de uma coluna, criará grupos aninhados. A ordem do aninhamento seguirá a ordem em que as colunas forem especificadas.

    As colunas-chave ficam na posição mais à esquerda no dataframe de saída.

    Observação

    O método outliers()  ordena automaticamente o dataframe pelas colunas-chave antes de identificar valores discrepantes.

  • None os dados não estão agrupados, e os valores discrepantes são identificados para coluna_numérica como um todo

    Um desvio padrão é calculado para coluna_numérica como um todo. O desvio padrão da coluna é usado como base para a identificação de valores discrepantes na coluna.

on = "coluna_numérica"

A coluna numérica onde serão procurados valores discrepantes. Você pode examinar apenas uma coluna por vez.

Os valores discrepantes são os que ficam fora dos limites superior e inferior estabelecidos pelo desvio padrão do grupo ou da coluna, ou por um múltiplo de desvio padrão especificado.

distance = número_desvios_padrão

Em coluna_numérica, o número de desvios padrão da média ou da mediana para os limites superior e inferior de valores discrepantes. Você pode especificar qualquer número inteiro ou decimal (0,5, 1, 1,5, 2... )

A fórmula para criar limites de valores discrepantes é:

média/mediana ± (número_desvios_padrão * desvio padrão)

Observação

O desvio padrão é uma medida da dispersão de um conjunto de dados. Ou seja, o quanto os valores estão dispersos. O cálculo de valores discrepantes usa desvio padrão da população.

Exemplo de limites de valores discrepantes

distance = 2

estabelece, para coluna_numérica como um todo, ou para cada grupo de colunas-chave:

  • um limite superior de valor discrepante de dois desvios padrão acima da média ou mediana

    mean/median + (2 * SD)

  • um limite inferior de valor discrepante de dois desvios padrão abaixo da média ou mediana

    mean/median – (2 * SD)

Qualquer valor acima do limite superior ou abaixo do limite inferior será incluído como valor discrepante nos resultados de saída.

Observação

Para o mesmo conjunto de dados, à medida que o valor de número_desvios_padrão é aumentado, diminui potencialmente o número de valores discrepantes retornados.

method = mean | median

opcional

O método para calcular o ponto central dos valores em coluna_numérica (a coluna de valores discrepantes).

  • mean calcula a média dos valores
  • median calcular a mediana dos valores

O ponto central é calculado para:

  • os valores numéricos para cada grupo de colunas-chave
  • a coluna numérica como um todo

O ponto central é usado posteriormente para calcular o desvio padrão de cada grupo ou da coluna numérica como um todo.

Se method for omitido, o valor padrão de média será usado.

Dica

Se os dados onde você está procurando valores discrepantes estiverem consideravelmente distorcidos, o uso da mediana poderá gerar resultados mais representativos da maior parte dos dados.

Retorna

Dataframe do HCL.

Exemplos

Identificar valores de transação anormais

Você quer identificar valores de transação anormais em todo o dataframe de contas a receber.

Você decide definir os limites de valores discrepantes como 3 vezes o desvio padrão da coluna Amount. O teste retorna 16 valores discrepantes no dataframe de 772 linhas.

outliers_ar = accounts_receivable.outliers(keys = None, on = "Amount", distance = 3, method = "mean")

Você repete o teste, mas aumenta o múltiplo de desvio padrão para 3,5. Agora, o teste retorna apenas 6 valores discrepantes porque os limites dos valores discrepantes estão mais afastados do ponto central dos valores na coluna Amount.

outliers_ar = accounts_receivable.outliers(keys = None, on = "Amount", distance = 3.5, method = "mean")

Identificar valores de transação anormais para cada cliente

Para cada cliente em um dataframe de contas a receber, você quer identificar todos os valores de transação anormais.

Você decide definir os limites de valores discrepantes como 3 vezes o desvio padrão do grupo de transações de cada cliente.

outliers_customer_ar = accounts_receivable.outliers(keys = ["CustNum"], on = "Amount", distance = 3, method = "mean")

O teste retorna 7 valores discrepantes. A média e o desvio padrão de cada grupo de transações de clientes são relatados:

group no CustNum Valor mean stdev distance
0 65003 4.954,64 833,83 1015,58 3
1 262001 3.567,34 438,81 772,44 3
1 262001 (2.044,82) 438,81 772,44 3
2 376005 (931,55) 484,57 411,18 3
3 501657 5.549,19 441,14 1332,80 3
4 811002 3.409,82 672,10 634,20 3
5 925007 3.393,87 906,16 736,48 3

Como os valores discrepantes são identificados para o cliente 262001

O cliente 262001 tem 101 transações no dataframe de contas a receber, das quais duas são relatadas como valores discrepantes porque excedem os limites de valores discrepantes desse cliente:

Valor discrepante Limite inferior Limite superior Valor discrepante
(2.044,82) (1.878,51) 2.756,13 3.567,34

Como os limites de valores discrepantes são calculados para o cliente 262001

Os limites de valores discrepantes são a média de todas as transações 262001 do cliente, mais ou menos o múltiplo de desvio padrão das transações especificado:

média de todas as transações do cliente 262001 438,81
O múltiplo de desvio padrão especificado 3
O desvio padrão das transações 772,44

438,81 ± (3 * 772,44)

= 438,81 ± 2.317,32

= (1.878,51) (limite inferior)

= 2.756,13 (limite superior)

Usar mediana para identificar valores de transação anormais para cada cliente

Use mediana, em vez de média, para executar o mesmo teste de valor discrepante do exemplo acima.

outliers_customer_ar_median = accounts_receivable.outliers(keys = ["CustNum"], on = "Amount", distance = 3, method = "median")

O teste retorna 10 valores discrepantes, em vez dos 7 retornados no teste anterior. Dependendo da natureza dos dados, mediana e média podem retornar resultados diferentes:

group no CustNum Valor mediana stdev distance
0 65003 4.954,64 663,68 1015,58 3
1 262001 3.567,34 450,67 772,44 3
1 262001 (2.044,82) 450,67 772,44 3
2 376005 (931,55) 517,16 411,18 3
3 501657 4.426,14 146,80 1332,80 3
3 501657 5.549,19 146,80 1332,80 3
4 811002 3.409,82 624,53 634,20 3
5 925007 2.972,78 717,88 736,48 3
5 925007 3.030,71 717,88 736,48 3
5 925007 3.393,87 717,88 736,48 3

Como os limites de valores discrepantes são calculados para cada cliente

Os limites de valores discrepantes são a mediana das transações de cada cliente, mais ou menos o múltiplo de desvio padrão das transações especificado.

Por exemplo, para o cliente 262001: 450,67 ± (3 * 772,44)

Observações

Todas as colunas do dataframe de entrada são incluídas automaticamente no dataframe de saída. As colunas não envolvidas diretamente no cálculo de valores discrepantes são posicionadas mais à direita no dataframe de saída.