計算 Pandas DataFrame 中的方差

Fariba Laiq 2024年2月15日
  1. 方差的定義
  2. 計算 Pandas DataFrame 中單列的方差
  3. 計算整個 Pandas DataFrame 的方差
  4. 計算 Pandas DataFrame 沿列軸的方差
  5. 計算 Pandas DataFrame 沿行軸的方差
計算 Pandas DataFrame 中的方差

本教程將演示如何計算 Python Pandas DataFrame 中的方差。

方差的定義

統計方差是資料離散度的度量。通過方差,我們可以知道資料中的分佈。

資料點離它們的平均值越遠,方差越大。方差是平方標準差。

方差分三步計算:

  • 確定每個資料點與平均值的差異程度。
  • 計算每個差值的平方。
  • 將平方差的總和除以樣本中的觀察數(減 1)。

我們使用 DataFrame 物件呼叫 var() 方法來計算方差。此方法接受四個可選引數。

語法:

# Python 3.x
variance = df.var(axis, skipna, level, ddof)
  • axis:指定沿哪個軸計算方差。值 0 表示一列,值 1 表示一行。預設值為 0(列軸)。
  • skipna:指定是否跳過空值。預設值是 true。
  • level:與多索引(分層)軸的某個級別一起計數,摺疊成一個系列。字串指定級別的名稱。
  • ddof:代表自由度。N – ddof 是計算中使用的除數,其中 N 是元素的數量。
  • numeric_only:僅使用浮點、整數和布林列。如果 None,一切都會先嚐試,然後只使用數字資料,對於 Series,沒有實現。

計算 Pandas DataFrame 中單列的方差

在呼叫 var() 方法計算方差時,我們可以通過在方括號中指定 DataFrame 的列名來計算單列的方差。

示例程式碼:

# Python 3.x
import pandas as pd

df = pd.DataFrame(
    {"C1": [2, 7, 5, 4], "C2": [4, 1, 8, 2], "C3": [6, 6, 6, 5], "C4": [3, 2, 8, 7]}
)
display(df)
C1_variance = df["C1"].var()
print("Variance of C1:", C1_variance)

輸出:

單列方差

計算整個 Pandas DataFrame 的方差

我們可以使用 DataFrame 物件的內建方法來計算整個 DataFrame 的均值、標準差和方差。

在下面的程式碼中,我們有一個 DataFrame,我們計算了所有這三個變數並將它們儲存在另一個名為 stats 的 DataFrame 中。

mean() 方法計算平均值。std() 方法計算標準差,var() 方法計算整個 DataFrame 的方差。

最後,我們展示了 statsDataFrame。

示例程式碼:

# Python 3.x
import pandas as pd

df = pd.DataFrame(
    {"C1": [2, 7, 5, 4], "C2": [4, 1, 8, 2], "C3": [6, 6, 6, 5], "C4": [3, 2, 8, 7]}
)
display(df)
stats = pd.DataFrame()
stats["Mean"] = df.mean()
stats["Std_Dev"] = df.std()
stats["Variance"] = df.var()
display(stats)

輸出:

整個 DataFrame 的方差

計算 Pandas DataFrame 沿列軸的方差

為了逐列計算方差,我們將指定 axis=0 作為 var() 方法的引數。預設情況下,方差是按列計算的。

示例程式碼:

# Python 3.x
import pandas as pd

df = pd.DataFrame(
    {"C1": [2, 7, 5, 4], "C2": [4, 1, 8, 2], "C3": [6, 6, 6, 5], "C4": [3, 2, 8, 7]}
)
display(df)
df.var(axis=0)

沿柱軸的方差

計算 Pandas DataFrame 沿行軸的方差

我們將指定 axis=1 作為 var() 方法的引數,以計算行值的方差。

示例程式碼:

# Python 3.x
import pandas as pd

df = pd.DataFrame(
    {"C1": [2, 7, 5, 4], "C2": [4, 1, 8, 2], "C3": [6, 6, 6, 5], "C4": [3, 2, 8, 7]}
)
display(df)
df.var(axis=1)

輸出:

沿行軸的方差

作者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn