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 是一種非常節省記憶體的技術。您可以使用最符合您需求的任何一種方法,但為了學習目的,掌握這些知識至關重要。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP