Metodo outliers()

Identifica i valori statistici anomali in una colonna numerica. I valori anomali possono essere identificati per l'intera colonna o per gruppi separati in base a valori identici in una o più colonne chiave.

Sintassi

dataframe_name.outliers(keys = ["key_column", "...n"]|None, on = "numeric_column", distance = number_of_std_devs, method = mean|median)

Parametri

Nome Descrizione
keys = ["key_column", "...n"] | None
  • key_column la colonna o le colonne chiave per raggruppare i dati nel dataframe

    Per ciascun gruppo, viene calcolata una deviazione standard per i valori numerici del gruppo in numeric_column. La deviazione standard del gruppo viene utilizzata come base per identificare i valori anomali del gruppo.

    Se si raggruppa in base a più di una colonna, si creano gruppi nidificati. L'ordine di nidificazione segue l'ordine in cui si specificano le colonne.

    Le colonne chiave sono posizionate più a sinistra nel dataframe di output.

    Nota

    Il metodo outliers() ordina automaticamente il dataframe in base alle colonne chiave prima di identificare i valori anomali.

  • None: i dati non vengono raggruppati e i valori anomali vengono identificati per numeric_column nel suo complesso.

    Viene calcolata una deviazione standard per numeric_column nel suo complesso. La deviazione standard della colonna viene utilizzata come base per identificare i valori anomali della colonna.

on = "numeric_column"

La colonna numerica da esaminare per individuare i valori anomali. È possibile esaminare solo una colonna alla volta.

I valori anomali sono valori che si trovano al di fuori dei limiti superiore e inferiore stabiliti dalla deviazione standard del gruppo o della colonna, oppure da un multiplo specificato della deviazione standard.

distance = number_of_std_devs

In numeric_column, il numero di deviazioni standard dalla media o dalla mediana ai limiti superiori e inferiori dei valori anomali. È possibile specificare qualsiasi numero intero positivo o decimale (0,5, 1, 1,5, 2 . . . )

La formula per creare limiti di valori anomali è:

mean/median ± (number_of_std_devs * standard deviation)

Nota

La deviazione standard è una misura della dispersione di un set di dati, ovvero di quanto sono distribuiti i valori. Il calcolo dei valori anomali utilizza la deviazione standard della popolazione.

Esempio di limiti di valori anomali

distance = 2

stabilisce, per numeric_column nel suo complesso, o per ogni gruppo di colonne chiave:

  • un limite superiore di valori anomali 2 deviazioni standard maggiori della media o della mediana

    mean/median + (2 * SD)

  • un limite inferiore di valori anomali 2 deviazioni standard minori della media o della mediana

    mean/median – (2 * SD)

Qualsiasi valore superiore al limite superiore o inferiore al limite inferiore viene incluso come valore anomalo nei risultati di output.

Nota

Per lo stesso set di dati, aumentando il valore in number_of_std_devs, si riduce potenzialmente il numero di valori anomali restituiti.

method = mean | median

facoltativo

Metodo per calcolare il punto centrale dei valori in numeric_column (la colonna dei valori anomali).

  • media: viene calcolata la media dei valori
  • mediana: viene calcolata la mediana dei valori

Il punto centrale viene calcolato per:

  • i valori numerici per ogni gruppo di colonne chiave
  • la colonna numerica nel suo complesso

Il punto centrale viene poi utilizzato per calcolare la deviazione standard di ciascun gruppo o dell'intera colonna numerica.

Se si omette method, verrà utilizzato il valore predefinito di media.

Consiglio

Se i dati che si stanno esaminando per individuare i valori anomali sono significativamente distorti, l'utilizzo della mediana potrebbe produrre risultati più rappresentativi della maggior parte dei dati.

Restituisce

Dataframe HCL.

Esempi

Identificare gli importi anomali delle transazioni

Si desidera identificare gli importi delle transazioni anomali nell'intero dataframe dei crediti.

Si decide di impostare i limiti dei valori anomali a 3 volte la deviazione standard della colonna Importo. Il test restituisce 16 valori anomali nel dataframe di 772 righe.

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

Si ripete il ​​test, ma si aumenta la deviazione standard a 3,5. Ora il test restituisce solo 6 valori anomali perché i limiti dei valori anomali sono più lontani dal punto centrale dei valori nella colonna Importo.

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

Identificare gli importi anomali delle transazioni per ogni cliente

Per ogni cliente in un dataframe di crediti è opportuno identificare eventuali importi di transazione anomali.

Si decide di impostare i limiti anomali a 3 volte la deviazione standard del gruppo di transazioni di ciascun cliente.

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

Il test restituisce 7 valori anomali. Per ogni gruppo di transazioni del cliente vengono riportate la media e la deviazione standard:

N. gruppo N. cliente Importo media 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

Come vengono identificati i valori anomali per il cliente 262001

Il cliente 262001 ha 101 transazioni nel dataframe dei crediti e due di queste sono segnalate come valori anomali perché superano i limiti dei valori anomali per quel cliente:

Valore anomalo Limite inferiore Limite superiore Valore anomalo
(2.044,82) (1.878,51) 2.756,13 3.567,34

Come vengono calcolati i limiti dei valori anomali per il cliente 262001

I limiti dei valori anomali sono la media di tutte le transazioni dei clienti 262001, più o meno il multiplo specificato della deviazione standard delle transazioni:

media di tutte le transazioni del cliente 262001 438,81
Multiplo specificato della deviazione standard 3
Deviazione standard delle transazioni 772,44

438,81 ± (3 * 772,44)

= 438,81 ± 2.317,32

= (1.878,51) (limite inferiore)

= 2.756,13 (limite superiore)

Utilizzare la mediana per identificare gli importi anomali delle transazioni per ciascun cliente

Per eseguire lo stesso test dei valori anomali eseguito nell'esempio precedente, si utilizza la mediana anziché la media.

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

Il test restituisce 10 valori anomali invece dei 7 restituiti nel test precedente. A seconda della natura dei dati, la mediana e la media possono restituire risultati leggermente diversi:

N. gruppo N. cliente Importo 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

Come vengono calcolati i limiti dei valori anomali per ciascun cliente

I limiti dei valori anomali sono il valore mediano delle transazioni di ciascun cliente, più o meno il multiplo specificato della deviazione standard delle transazioni.

Ad esempio, per il cliente 262001: 450,67 ± (3 * 772,44)

Osservazioni

Tutte le colonne nel dataframe di input vengono automaticamente incluse nel dataframe di output. Le colonne non direttamente coinvolte nel calcolo dei valori anomali vengono posizionate più a destra nel dataframe di output.