Python - 列表的方差
在本文中,我们将学习方差以及如何计算列表的方差。您可能遇到过这个寻找方差的问题,特别是在数据科学中。因此,在本文中,我们将学习如何找到方差。
方差
这告诉我们数据是如何分布的,它为我们提供了一组点的程度的度量。我们可以使用各种方法计算列表的方差。让我们来了解一下这些方法。
方法 1:使用统计模块
在此方法中,我们将使用内置统计模型 python 来计算列表的方差。
示例
import statistics
data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance = statistics.variance(data)
print("原始列表值: ",data)
print("给定列表的方差为: ", variance)
输出
原始列表值: [2, 4, 6, 8, 10, 34, 23, 46, 67] 给定列表的方差列表为: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("原始列表值: ",data)
print("给定列表的方差为: ",variance)
输出
原始列表值: [2, 4, 6, 8, 10, 34, 23, 46, 67] 给定列表的方差为: 451.7283950617284
解释
在上面的程序中,我们手动计算列表数据的方差。首先,我们计算数据点的平均值。然后,我们将每个数据点与平均值之间的差值的平方相加,最后除以数据点的数量以获得方差。
方法 3:使用 Pandas
在此方法中,我们将使用在数据处理中非常流行的 pandas dataframe 库的概念。它为我们提供了 var() 方法,用于计算任何数据的方差。
示例
import pandas as pd
data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance = pd.Series(data).var()
print("原始列表值: ",data)
print("给定列表的方差为: ",variance)
输出
原始列表值: [2, 4, 6, 8, 10, 34, 23, 46, 67] 给定列表的方差为: 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("原始列表值: ",data)
print("给定列表的方差为: ",variance)
输出
原始列表值: [2, 4, 6, 8, 10, 34, 23, 46, 67] 给定列表的方差为: 451.7283950617284
解释
在上面的程序中,我们使用了 Welford 算法,通过一次数据计算列表数据的方差。此方法比其他方法更节省内存,因为它在一次传递中计算方差。
方法 5:使用 Numba 库
在此方法中,我们将使用 python 中的 Numba 库来计算列表的方差。 Numa 是 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("原始列表值: ",data)
print("给定列表的方差为: ",variance)
输出
原始列表值: [2, 4, 6, 8, 10, 34, 23, 46, 67] 给定列表的方差为: 451.7283950617284
解释
在上面的例子中,我们使用 Numba 的装饰器通过即时 (JIT) 编译来编译函数 calc_variance 。这可以更快地优化方差计算器。
方法 6:使用 Scipy 库
在此方法中,我们将使用非常强大且有用的 Scipy 库。它为我们提供了计算列表方差的函数。让我们看看如何使用程序。
示例
from scipy import stats
data = [2, 4, 6, 8, 10, 34, 23, 46, 67]
variance = stats.tvar(data)
print("原始列表值: ",data)
print("给定列表的方差为: ",variance)
输出
原始列表值: [2, 4, 6, 8, 10, 34, 23, 46, 67] 给定列表的方差为: 508.19444444444446
解释
这里上面的程序中,我们导入了 scipy.stats 模块并使用 tvar() 函数计算列表数据的方差。
结论
因此,我们了解了方差以及如何使用各种方法计算任何给定列表的方差。我们看到了不同的方法,如 Scipy、statistics、pandas、welford,其中 welford 是一种非常节省内存的技术。您可以使用最适合您需求的任何方法,但拥有知识对于学习目的至关重要。
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

