如何在 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 分数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注