計算 Pandas DataFrame 中的方差
Fariba Laiq
2023年1月30日
2022年5月16日
- 方差的定義
- 計算 Pandas DataFrame 中單列的方差
- 計算整個 Pandas DataFrame 的方差
- 計算 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 的方差。
最後,我們展示了 stats
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)
stats=pd.DataFrame()
stats["Mean"]=df.mean()
stats["Std_Dev"]=df.std()
stats["Variance"]=df.var()
display(stats)
輸出:
計算 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)
輸出:
Author: Fariba Laiq
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