API · SciPy
SciPy stats.zscore Funktion
In diesem Tutorial erfahren Sie, was die stats z-score-Funktion ist, indem Sie das Scipy-Modul in Python verwenden
Auf dieser Seite
Der z-score standardisiert einen Wert, indem er seinen Abstand vom Mittelwert der Daten in Einheiten der Standardabweichung misst:
z = (X - μ) / σ
Dabei ist X ein Wert, μ der Mittelwert und σ die Standardabweichung. Ein z-score beschreibt, wie weit ein Wert vom Mittelwert entfernt liegt, und ist nützlich, um Beobachtungen auf derselben Skala zu vergleichen. Diese Anleitung zeigt, wie Sie z-scores mit SciPy für Arrays und einen pandas DataFrame berechnen.
scipy.stats.zscore verwenden
Die Funktion scipy.stats.zscore berechnet standardisierte Werte aus array-ähnlicher Eingabe unter Verwendung von deren Mittelwert und Standardabweichung. Ihre Aufrufsignatur ist scipy.stats.zscore(a, axis=0, ddof=0, nan_policy='propagate').
| Parameter | Zweck |
|---|---|
a |
Erforderliche array-ähnliche Eingabe, die die Beobachtungen enthält. |
axis |
Achse, entlang der Mittelwert und Standardabweichung berechnet werden. Der Standardwert ist 0; bei einem eindimensionalen Array werden alle Werte verwendet, während bei einem mehrdimensionalen Array getrennt entlang Achse 0 gerechnet wird. Verwenden Sie axis=None, um über alle Werte gemeinsam zu berechnen. |
ddof |
Delta-Freiheitsgrade, die bei der Berechnung der Standardabweichung verwendet werden. Der Standardwert 0 verwendet die Standardabweichung der Grundgesamtheit; setzen Sie ddof=1 für die Standardabweichung der Stichprobe. |
nan_policy |
Steuert, wie NaN-Werte behandelt werden. propagate (der Standardwert) lässt NaNs die Ergebnisse entlang ihrer Berechnungsachse beeinflussen; raise meldet einen Fehler, wenn NaNs vorhanden sind; omit schließt NaNs aus der Berechnung aus und lässt ihre Ausgabepositionen als NaN stehen. |
Nur a ist erforderlich. Wählen Sie axis danach, ob jede Zeile, jede Spalte oder die gesamte Eingabe einen gemeinsamen Mittelwert und eine gemeinsame Standardabweichung haben soll.
z-scores für ein eindimensionales Array berechnen
Bei einem eindimensionalen Array verwendet der Standardwert axis=0 die gesamte Wertemenge. Führen Sie dieses Beispiel mit installiertem NumPy und SciPy aus:
import numpy as np
from scipy import stats
values = np.array([10, 20, 30, 40, 50])
scores = stats.zscore(values)
print(np.round(scores, 3))
Dieses Beispiel wird als ausführbarer Code bereitgestellt; seine Ausgabe wurde in diesem Schreibschritt nicht ausgeführt. Ein negativer Wert bedeutet, dass der Wert unter dem Mittelwert liegt, ein positiver Wert bedeutet, dass er über dem Mittelwert liegt, und ein Wert von null markiert den Mittelwert. Der Betrag gibt den Abstand in Einheiten der Standardabweichung an.
z-scores für ein mehrdimensionales Array berechnen
Bei einem zweidimensionalen Array berechnet der Standardwert axis=0 die Werte jeder Spalte über ihre Zeilen hinweg. Das Ergebnis behält die Form der Eingabe. Übergeben Sie axis=1, um getrennt über jede Zeile zu berechnen, oder axis=None, um einen Mittelwert und eine Standardabweichung für das gesamte Array zu verwenden.
import numpy as np
from scipy import stats
data = np.array([[1, 10], [2, 20], [3, 30]])
scores = stats.zscore(data, axis=0)
print(np.round(scores, 3))
Der Code veranschaulicht die spaltenweise Standardisierung und wird hier nicht ausgeführt; es wird keine Ausgabe behauptet.
z-scores für einen pandas DataFrame berechnen
DataFrame.apply() wendet standardmäßig eine Funktion auf jede Spalte an (axis=0). Wird stats.zscore auf diese Weise angewendet, wird jede Spalte unabhängig standardisiert. Dieser feste DataFrame macht die Eingabe reproduzierbar:
import pandas as pd
from scipy import stats
data = pd.DataFrame({"height": [150, 160, 170], "weight": [50, 60, 70]})
scores = data.apply(stats.zscore)
print(scores.round(3))
Dieses Beispiel wird hier nicht ausgeführt, sodass kein angezeigtes Ergebnis behauptet wird. Jede Spalte hat ihren eigenen Mittelwert und ihre eigene Standardabweichung; verwenden Sie data.apply(stats.zscore, axis=1), wenn die Berechnung stattdessen über jede Zeile erfolgen soll.