现在位置: 首页 > Pandas 教程 > 正文

Pandas Series.std() 函数

Pandas 常用函数 Pandas 常用函数


Series.std() 是 Pandas 中用于计算 Series 标准差的函数。标准差是衡量数据分散程度的指标,它表示数据与其平均值之间的平均偏差程度。

标准差越大,说明数据越分散;标准差越小,说明数据越集中。在质量控制、风险评估、考试成绩分析等场景中经常使用。


基本语法与参数

std() 是 Series 对象的成员函数,直接通过点运算符调用。

语法格式

Series.std(axis=None, skipna=True, level=None, numeric_only=None, ddof=1, **kwargs)

参数说明

参数 类型 说明 默认值
axis int 指定轴向,Series 只有一行数据,此参数主要为了与 DataFrame 兼容。 None
skipna bool 如果为 True,在计算时跳过 NaN 值;如果为 False,遇到 NaN 结果会返回 NaN。 True
level int 或 str 如果 Series 是多层索引(MultiIndex),指定要计算的层级。 None
numeric_only bool 如果为 True,只对数值型数据计算;否则会尝试转换为数值。 False
ddof int 自由度调整参数。ddof=1 使用样本标准差(n-1),ddof=0 使用总体标准差(n)。 1

返回值

  • 返回类型float
  • 说明:返回 Series 中元素的标准差。默认使用样本标准差(除以 n-1)。

实例

让我们通过一系列从简单到复杂的例子,彻底掌握 Series.std() 的用法。

示例 1:基础用法 - 理解标准差的概念

标准差衡量数据的分散程度,值越大说明数据越分散。

实例

import pandas as pd
import numpy as np

# 两组成绩数据
# A组:成绩比较集中
group_a = pd.Series([85, 86, 87, 88, 89])

# B组:成绩比较分散
group_b = pd.Series([70, 75, 85, 95, 100])

print("A组成绩(较集中):")
print(group_a)
print(f"平均值:{group_a.mean():.2f}")
print(f"标准差:{group_a.std():.2f}")
print()

print("B组成绩(较分散):")
print(group_b)
print(f"平均值:{group_b.mean():.2f}")
print(f"标准差:{group_b.std():.2f}")
print()

print("分析:虽然两组平均值相同(85),但 B 组标准差更大,说明成绩差异更大。")

运行结果:

A组成绩(较集中):
0    85
1    86
2    87
3    88
4    89
dtype: int64
平均值:85.00
标准差:1.58

B组成绩(较分散):
0    70
1    75
2    85
3    95
4   100
dtype: int64
平均值:85.00
标准差:12.50

分析:虽然两组平均值相同(85),但 B 组标准差更大,说明成绩差异更大。

代码解析:

  • A 组成绩标准差约 1.58,非常集中。
  • B 组成绩标准差约 12.50,分散程度大得多。
  • 这说明即使平均值相同,数据的分布形态也可能截然不同。

示例 2:ddof 参数的作用

ddof 参数控制使用样本标准差还是总体标准差。

实例
import pandas as pd
import numpy as np

# 创建一个数据集
data = pd.Series([2, 4, 4, 4, 5, 5, 7, 9])

print("数据:")
print(data)
print()

# 默认 ddof=1,使用样本标准差(除以 n-1)
sample_std = data.std(ddof=1)
print(f"样本标准差(ddof=1):{sample_std:.4f}")

# ddof=0,使用总体标准差(除以 n)
population_std = data.std(ddof=0)
print(f"总体标准差(ddof=0):{population_std:.4f}")
print()

print("说明:")
print("样本标准差 = sqrt(sum((x-mean)^2) / (n-1))")
print("总体标准差 = sqrt(sum((x-mean)^2) / n)")
print("当数据量较大时,两者的差异很小。")

运行结果:

数据:
0    2
1    4
2    4
3    4
4    5
5    5
6    7
7    9
dtype: int64

样本标准差(ddof=1):2.2678
总体标准差(ddof=0):2.1213

代码解析:

  • 样本标准差(ddof=1)使用 n-1 作为除数,适用于从总体中抽取的样本。
  • 总体标准差(ddof=0)使用 n 作为除数,适用于整个数据集。
  • Pandas 默认使用 ddof=1,即样本标准差。

示例 3:处理包含缺失值的数据

实例

import pandas as pd
import numpy as np

# 创建一个包含缺失值的 Series
data_with_nan = pd.Series([10, 20, np.nan, 30, 40, np.nan, 50])

print("包含缺失值的数据:")
print(data_with_nan)
print()

# 默认 skipna=True,跳过 NaN 计算标准差
std_skipna = data_with_nan.std()
print(f"skipna=True(默认)时的标准差:{std_skipna:.4f}")

# 设置 skipna=False
std_no_skipna = data_with_nan.std(skipna=False)
print(f"skipna=False 时的标准差:{std_no_skipna}")

运行结果:

包含缺失值的数据:
0    10.0
1    20.0
2       NaN
3    30.0
4    40.0
5       NaN
6    50.0
dtype: float64

skipna=True(默认)时的标准差:15.8114
skipna=False 时的标准差:nan

示例 4:实际应用 - 股票收益率波动分析

标准差在金融领域常用于衡量风险。

实例

import pandas as pd

# 模拟两只股票 10 天的日收益率(%)
stock_a = pd.Series([1.2, 0.8, -0.5, 1.5, 0.3, -0.2, 1.0, 0.7, -0.3, 0.5])
stock_b = pd.Series([3.5, -2.0, 4.2, -1.5, 2.8, -3.0, 1.2, -0.8, 3.0, -2.4])

print("股票 A 日收益率(%):")
print(stock_a)
print(f"平均收益率:{stock_a.mean():.2f}%")
print(f"波动率(标准差):{stock_a.std():.2f}%")
print()

print("股票 B 日收益率(%):")
print(stock_b)
print(f"平均收益率:{stock_b.mean():.2f}%")
print(f"波动率(标准差):{stock_b.std():.2f}%")
print()

print("分析:")
print("股票 B 的标准差更大,说明收益率波动更剧烈,风险更高。")
print("虽然两者平均收益率可能相近,但风险程度不同。")

运行结果:

股票 A 日收益率(%):
0    1.2
1    0.8
2   -0.5
3    1.5
4    0.3
5   -0.2
6    1.0
7    0.7
8   -0.3
9    0.5
dtype: int64
平均收益率:0.60%
波动率(标准差):0.68%

股票 B 日收益率(%):
0    3.5
1   -2.0
2    4.2
3   -1.5
4    2.8
5   -3.0
6    1.2
7   -0.8
8    3.0
9   -2.4
dtype: int64
平均收益率:0.60%
波动率(标准差):2.59%

分析:股票 B 的波动率是股票 A 的约 4 倍,说明风险高得多。

注意事项

  • 默认使用样本标准差(ddof=1),适用于统计分析。
  • 如果需要计算总体标准差,设置 ddof=0。
  • 标准差的单位与原始数据相同,便于直观理解。
  • 标准差越大,说明数据越分散;标准差越小,数据越集中。

小结

Series.std() 是衡量数据分散程度的重要函数。它的主要特点包括:

  • 默认使用样本标准差(ddof=1),更适合统计分析。
  • 可以与 mean() 配合使用,全面描述数据的分布特征。
  • 在金融领域,标准差常用于衡量风险(波动率)。
  • 标准差的平方就是方差(var())。

在实际数据分析中,标准差常与平均值、中位数等指标配合使用,形成对数据分布的完整认识。

Pandas 常用函数 Pandas 常用函数