计算 Pandas DataFrame 中的方差
Fariba Laiq
2024年2月15日
- 方差的定义
- 计算 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)
输出:
作者: 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