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 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.