如何在 python 中计算 z 分数
在统计学中, z 分数告诉我们某个值与平均值的标准差有多少。我们使用以下公式来计算 z 分数:
z = (X – μ) / σ
金子:
- X 是单个原始数据值
- μ 是总体平均值
- σ 是总体标准差
本教程介绍如何在 Python 中计算原始数据值的 z 分数。
如何用 Python 计算 Z 分数
我们可以使用scipy.stats.zscore在 Python 中计算 z 分数,它使用以下语法:
scipy.stats.zscore(a, axis=0, ddof=0, nan_policy=’propagate’)
金子:
- a :包含数据的数组类型对象
- axis :计算 z 分数的轴。默认值为 0。
- ddof :标准差计算中自由度的修正。默认值为 0。
- nan_policy :当输入包含 nan 时如何处理。默认值是propagate,它返回nan。 ‘raise’ 引发错误,’omit’ 执行忽略 nan 值的计算。
以下示例说明如何使用此函数计算一维 numpy 数组、多维 numpy 数组和 Pandas DataFrame 的 z 分数。
Numpy 一维数组
第 1 步:导入模块。
import pandas as pd import numpy as np import scipy.stats as stats
步骤 2:创建值表。
data = np.array([6, 7, 7, 12, 13, 13, 15, 16, 19, 22])
步骤 3:计算表中每个值的 z 分数。
stats.zscore(data)
[-1.394, -1.195, -1.195, -0.199, 0, 0, 0.398, 0.598, 1.195, 1.793]
每个 z 分数告诉我们单个值与平均值的标准差有多少。例如:
- 表中的第一个值“6”比平均值低1.394 个标准差。
- 表中的第五个值“13”与平均值的标准差为0 ,即等于平均值。
- 表中的最后一个值“22”比平均值高1.793 个标准差。
Numpy 多维数组
如果我们有一个多维数组,我们可以使用axis参数来指定我们要计算相对于其自身数组的每个 z 分数。例如,假设我们有以下多维数组:
data = np.array([[5, 6, 7, 7, 8], [8, 8, 8, 9, 9], [2, 2, 4, 4, 5]])
我们可以使用以下语法来计算每个表的 z 分数:
stats.zscore(data, axis=1) [[-1.569 -0.588 0.392 0.392 1.373] [-0.816 -0.816 -0.816 1.225 1.225] [-1.167 -1.167 0.5 0.5 1.333]]
每个单独值的 z 分数是相对于它们所在的表显示的。例如:
- 第一个表中的第一个值“5”比其表平均值低1.159 个标准差。
- 第二个表中的第一个值“8”比其表平均值低0.816 个标准差。
- 第三个表中的第一个值“2”比其表的平均值低1.167 个标准差。
熊猫数据框
假设我们有一个 Pandas DataFrame:
data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data ABC 0 8 0 9 1 4 0 7 2 9 6 8 3 1 8 1 4 8 0 8
我们可以使用apply函数来计算每列各个值的 z 分数:
data.apply(stats.zscore) ABC 0 0.659380 -0.802955 0.836080 1 -0.659380 -0.802955 0.139347 2 0.989071 0.917663 0.487713 3 -1.648451 1.491202 -1.950852 4 0.659380 -0.802955 0.487713
每个单独值的 z 分数是相对于它们所在的列显示的。例如:
- 第一列中的第一个值“8”比该列的平均值高0.659 个标准差。
- 第二列中的第一个“0”值比该列中的平均值低0.803 个标准差。
- 第三列中的第一个值“9”比该列的平均值高0.836 个标准差。
其他资源:
如何在 Excel 中计算 Z 分数
如何在 SPSS 中计算 Z 分数
如何在 TI-84 计算器上计算 Z 分数