计算 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