Python 列表方差


在这篇文章中,我们将学习方差以及如何计算列表的方差。您可能在数据科学中遇到过查找方差的问题。因此,在这篇文章中,我们将学习如何查找方差。

方差

这告诉我们数据是如何分布的,它为我们提供了一组点的程度度量。我们可以使用各种方法计算列表的方差。让我们了解这些方法。

方法 1:使用 Statistics 模块

在这种方法中,我们将使用 Python 内置的 statistics 模块来计算列表的方差。

示例

import statistics

data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance = statistics.variance(data)

print("Original list value: ",data)
print("Variance of given list is: ", variance)

输出

Original list value: [2, 4, 6, 8, 10, 34, 23, 46, 67] 
Variance of given list is: 508.19444444444446

解释

在上面的程序中,我们通过将其导入程序中使用了 statistics 模块。然后,我们使用 statistics 模块提供的 variance() 函数来计算方差。

方法 2:使用公式

这是计算任何列表方差的非常基本的方法。我们将简单地使用查找方差的公式。

示例

data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
mean = sum(data) / len(data)
variance = sum((x - mean) ** 2 for x in data) / len(data)

print("Original list value: ",data)
print("Variance of given list is: ",variance)

输出

Original list value: [2, 4, 6, 8, 10, 34, 23, 46, 67] 
Variance of given list is: 451.7283950617284

解释

在上面的程序中,我们手动计算列表数据的方差。首先,我们计算数据点的平均值。然后,我们对每个数据点与平均值之间的差的平方求和,最后,除以数据点的数量以获得方差。

方法 3:使用 Pandas

在这种方法中,我们将使用 Pandas 数据框库的概念,该库非常流行用于数据操作。它为我们提供了 var() 方法,用于计算任何数据的方差。

示例

import pandas as pd

data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance = pd.Series(data).var()

print("Original list value: ",data)
print("Variance of given list is: ",variance)

输出

Original list value: [2, 4, 6, 8, 10, 34, 23, 46, 67] 
Variance of given list is: 508.19444444444446

解释

在上面的程序中,我们导入了 pandas 模块并将列表转换为 PandasSeries,然后使用 var() 方法计算序列的方差。

方法 4:使用 Welford 算法

在这种方法中,我们将使用 Welford 算法来计算列表值的方差。它使用单次遍历来计算列表数据的方差。

示例

import pandas as pd

data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
n = len(data)
mean = variance = 0

for i, x in enumerate(data, 1):
   delta = x - mean
   mean += delta / i
   variance += delta * (x - mean)

variance /= n
print("Original list value: ",data)
print("Variance of given list is: ",variance)

输出

Original list value: [2, 4, 6, 8, 10, 34, 23, 46, 67] 
Variance of given list is: 451.7283950617284

解释

在上面的程序中,我们使用 Welford 算法在对数据进行单次遍历时计算列表数据的方差。此方法比其他方法更节省内存,因为它在单次遍历中计算方差。

方法 5:使用 Numba 库

在这种方法中,我们将使用 Python 中的 Numba 库来计算列表的方差。Numba 是 Python 的即时编译器,用于加速数值函数。让我们通过一个例子来看看。

示例

import numba as nb
def calc_variance(data):
   mean = variance = 0
   n = len(data)

   for i, x in enumerate(data, 1):
      delta = x - mean
      mean += delta / i
      variance += delta * (x - mean)

   return variance / n

data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance =calc_variance(data)

print("Original list value: ",data)
print("Variance of given list is: ",variance)

输出

Original list value:  [2, 4, 6, 8, 10, 34, 23, 46, 67]
Variance of given list is:  451.7283950617284

解释

在上面的示例中,我们使用 Numba 的装饰器来编译函数 **calc_variance**,并进行即时 (JIT) 编译。这优化了方差计算速度。

方法 6:使用 Scipy 库

在这种方法中,我们将使用 Scipy 库,这是一个非常强大且有用的库。它为我们提供了计算列表方差的函数。让我们通过程序来看看。

示例

from scipy import stats

data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance = stats.tvar(data)

print("Original list value: ",data)
print("Variance of given list is: ",variance)

输出

Original list value: [2, 4, 6, 8, 10, 34, 23, 46, 67] 
Variance of given list is: 508.19444444444446

解释

在上面的程序中,我们导入了 scipy.stats 模块并使用 tvar() 函数来计算列表数据的方差。

结论

因此,我们了解了方差以及如何使用各种方法计算任何给定列表的方差。我们看到了不同的方法,例如 Scipy、statistics、pandas、Welford,其中 Welford 是一种非常节省内存的技术。您可以使用最符合您需求的任何一种方法,但为了学习目的,掌握这些知识至关重要。

更新于:2023年10月6日

611 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告