SciPy stats.zscore 関数
-
scipy.stats.zscore
関数 -
Python で
1 次元
の配列に対するz-score
の計算 -
Python での多次元配列の
z-score
の計算 -
Python での
Pandas データフレーム
のz-score
の計算
z-score
は、標準偏差が平均値から特定の値だけ離れている値を計算するのに役立つ統計手法です。z-score
は、次の式を使用して計算されます。
z = (X – μ) / σ
その中で、
- X はデータからの特定の値です
- μは平均値です
- σは標準偏差です
このチュートリアルでは、SciPy
ライブラリを使用して Python でデータの z-score
値を計算する方法を示します。
scipy.stats.zscore
関数
SciPy
ライブラリの scipy.stats.zscore
関数は、データの平均と標準偏差とともに、指定された入力生データの相対的な z-score
を計算するのに役立ちます。これは、scipy.stats.zscore(a, axis, ddof, nan_policy)
として定義されています。
以下は、scipy.stats.zscore
関数のパラメーターです。
a(配列) |
生の入力データの配列のようなオブジェクト。 |
axis(int) |
関数が z-score 値を計算する軸を定義します。デフォルト値は 0 です。つまり、関数は配列全体を計算します。 |
ddof (int) |
これは、標準偏差の計算全体における自由度の補正を定義します。 |
nan_policy |
このパラメーターは、入力データに NaN 値がある場合の処理方法を決定します。パラメータには、propagate 、raise 、omit の 3つの決定パラメータがあります。propagate は単に NaN 値を返し、raise はエラーを返し、omit は単に NaN 値を無視し、関数は計算を続行します。これらの決定パラメータは一重引用符 '' で定義されます。また、NaN 値は、入力データに存在する他の値に対して計算される z-score 値に影響を与えることはありません。 |
a(配列)
パラメーターを除くすべてのパラメーターはオプションです。つまり、scipy.stats.zscore
関数を使用している間、毎回それらを定義する必要はありません。
それでは、1 次元配列
、多次元配列
、およびパンダデータフレーム
で scipy.stats.zscore
関数を使用してみましょう。
Python で 1 次元
の配列に対する z-score
の計算
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)
出力:
array([-1.3916106 , -1.09379511, -0.49816411, 0.39528239, -0.20034861,
-0.37903791, -0.55772721, -0.55772721, 1.28872889, 0.99091339,
2.00348608])
各 z-score
値は、平均値からの対応する値から離れた標準偏差値の数を示していることに注意してください。ここで、負の
符号は、その値が平均値の下
の多くの標準偏差であることを表し、正の符号は、その値が平均値の上
の多くの標準偏差であることを表します。z-score
値が 0
であることが判明した場合、その値は平均値から 0
標準偏差値離れています。
Python での多次元配列の z-score
の計算
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)
出力:
array([-1.3916106 , -1.09379511, -0.49816411, 0.39528239, -0.20034861,
-0.37903791, -0.55772721, -0.55772721, 1.28872889, 0.99091339,
2.00348608])
Python での Pandas データフレーム
の z-score
の計算
ここでは、NumPy
ライブラリの randint()
関数を使用します。この関数は、ランダムなサンプル番号を生成し、それらを NumPy
配列の形式で保存するために使用されます。NumPy
配列を作成した後、その配列を Pandas データフレーム
として使用します。
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)
出力:
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
Pandas
ライブラリの apply()
関数は、指定されたデータフレームの各値の z-score
値を計算するために使用されることに注意してください。この関数は、apply()
関数の関数の引数として定義された特定の関数を Pandas シリーズまたはデータフレームの各値に適用するために使用されます。
Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.
LinkedIn