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 是一种非常节省内存的技术。您可以使用最符合您需求的任何一种方法,但为了学习目的,掌握这些知识至关重要。