Función SciPy stats.zscore

  1. La función scipy.stats.zscore
  2. Calcular el z-score para un Array unidimensional en Python
  3. Calcular el z-score de una matriz multidimensional en Python
  4. Cálculo del z-score para un Pandas Dataframe en Python

z-score es un método estadístico que ayuda a calcular a cuántos valores la desviación estándar se aleja un valor particular del valor medio. El z-score se calcula con la ayuda de la siguiente fórmula.

z = (X – μ) / σ

En el cual,

  • X es un valor particular de los datos
  • μ es el valor medio
  • σ es la desviación estándar

Este tutorial mostrará cómo calcular el valor z-score de cualquier dato en Python utilizando la biblioteca SciPy.

La función scipy.stats.zscore

La función scipy.stats.zscore de la librería SciPy ayuda a calcular el valor relativo z-score de los datos brutos de entrada dados junto con la media y la desviación estándar de los datos. Se define como scipy.stats.zscore(a, axis, ddof, nan_policy).

Los siguientes son los parámetros de la función scipy.stats.zscore.

una (matriz) Un objeto similar a una matriz de los datos de entrada sin procesar.
axis (int) Define el eje a lo largo del cual la función calcula el valor z-score. El valor predeterminado es 0, es decir, la función calcula sobre todo el array.
ddof (int) Define el grado de corrección de libertad en todo el cálculo de la desviación estándar.
nan_policy Este parámetro decide cómo tratar cuando hay valores NaN en los datos de entrada. Hay tres parámetros de decisión en el parámetro, propagate, raise, omit. El parámetro propagate simplemente devuelve el valor NaN, raise devuelve un error y omit simplemente ignora los valores NaN y la función continúa con el cálculo. Estos parámetros de decisión se definen entre comillas simples ''. Además, los valores NaN nunca afectan al valor z-score que se calcula para los demás valores presentes en los datos de entrada.

Todos los parámetros excepto el parámetro a (array) son opcionales. Eso significa que no es necesario definirlos cada vez que se usa la función scipy.stats.zscore.

Ahora, usemos la función scipy.stats.zscore en matriz unidimensional, matriz multidimensional y Pandas Dataframe.

Calcular el z-score para un Array unidimensional en Python

import numpy as np
import scipy.stats as stats

input_data = np.array([5, 10, 20, 35, 25, 22, 19, 19, 50, 45, 62])

stats.zscore(input_data)

Producción:

array([-1.3916106 , -1.09379511, -0.49816411,  0.39528239, -0.20034861,
       -0.37903791, -0.55772721, -0.55772721,  1.28872889,  0.99091339,
        2.00348608])

Tenga en cuenta que cada valor de puntuación z indica a cuántos valores de desviación estándar se aleja su valor correspondiente del valor medio. Aquí, el signo negativo representa que ese valor es esa cantidad de desviaciones estándar por debajo del valor medio, y el signo positivo representa que ese valor es esa cantidad de desviaciones estándar por encima del valor medio. Si un valor de z-score resulta ser 0, entonces ese valor está a 0 valores de desviación estándar del valor medio.

Calcular el z-score de una matriz multidimensional en Python

import numpy as np
import scipy.stats as stats

data = np.array([[5, 10, 20, 35],
                 [25, 22, 19, 19],
                 [50, 45, 62, 28],
                 [24, 45, 15, 30]])

stats.zscore(input_data)

Producción:

array([-1.3916106 , -1.09379511, -0.49816411,  0.39528239, -0.20034861,
       -0.37903791, -0.55772721, -0.55772721,  1.28872889,  0.99091339,
        2.00348608])

Cálculo del z-score para un Pandas Dataframe en Python

En este caso, utilizaremos la función randint() de la librería NumPy. Esta función se utiliza para generar números aleatorios de muestra y almacenarlos en forma de array NumPy. Después de crear el array NumPy, utilizaremos ese array como un Pandas Dataframe.

import pandas as pd
import numpy as np
import scipy.stats as stats

input_data = pd.DataFrame(np.random.randint(0, 30, size=(4, 4)), columns=['W', 'X', 'Y', 'Z'])
print(input_data)
    W   X   Y   Z
0   7   9   2  15
1  11  23  15  28
2  28  11  25   2
3  11  19  14  15
input_data.apply(stats.zscore)

Producción:

          W	        X	        Y	        Z
0	-0.894534	-1.135815	-1.471534	 0.000000
1	-0.400998	 1.310556	 0.122628	 1.414214
2	 1.696529	-0.786334	 1.348907	-1.414214
3	-0.400998	 0.611593	 0.000000	 0.000000

Observe que la función apply() de la biblioteca Pandas se utiliza para calcular el valor z-score para cada valor en el dataframe dado. Esta función se utiliza para aplicar una función específica definida como argumento de la función apply() a cada valor de la serie o dataframe de Pandas.

Artículo relacionado - SciPy Stats

  • Función SciPy scipy.stats.binom
  • Función SciPy scipy.stats.mode
  • Función SciPy scipy.stats.sem
  • Función SciPy stats.beta