关于Pandas版本: 本文基于 pandas2.2.0 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
传送门: Pandas API参考目录
传送门: Pandas 版本更新及新特性
传送门: Pandas 由浅入深系列教程
Pandas.Series.std
方法用于返回 Series
的标准差,通过控制自由度参数 ddof
可以实现返回 样本标准差
或 总体标准差
。
传送门:标准差的概念
?? 关于取样方法的说明(不纠结计算过程的同学请跳过):
Pandas.Series.std
方法的默认 ddof=1
,对当前数据计算 样本标准差 :
Pandas.Series.std
计算标准差。无论是 ddof=1
或 ddof=0
,参与计算的数值总量n
或N
,都是4个。取样方法
,因为根本就没取样。样本标准差公式 Pandas.Series.std
默认的标准差计算方法是根号内以 n-1
为底,即样本标准差:
s = ∑ i = 1 n ( x i ? x ˉ ) 2 n ? 1 s = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n-1}} s=n?1∑i=1n?(xi??xˉ)2??
s s s 表示样本标准差, n n n 表示样本大小, x i x_i xi? 表示每个观测值, x ˉ \bar{x} xˉ 表示样本均值。
总体标准差公式
σ = ∑ i = 1 N ( x i ? μ ) 2 N \sigma = \sqrt{\frac{\sum_{i=1}^{N}(x_i - \mu)^2}{N}} σ=N∑i=1N?(xi??μ)2??
σ \sigma σ 表示总体标准差, μ \mu μ 表示总体均值, N N N 表示总体大小。
Series.std(axis=None, skipna=True, ddof=1, numeric_only=False, **kwargs)
Series or Series (if level specified)
Series
或 Series
,依传输的数据结构而定。axis : {0 or ‘index’}
axis
参数,用于指定计算方向,即按行计算或按列计算标准差:
Series
此参数无效,将始终保持 axis=0
,即计算整列的标准差。例1skipna : bool, default False >
skipna
参数,用于指定求标准差的时候是否忽略缺失值:
float 0.0
。?? 注意 :
如果整列都是缺失值,那么标准差结果是依然是NaN。 例2
ddof : int, default 1 例3
ddof
: Delta 自由度,用于计算的除数是 N-ddof
,其中 N
代表元素的数量。默认值为 1。
ddof=0
Series.std
的行为和 numpy.std
一致。??ddof 应该如何取值?:
ddof=1
或保持默认。进行 样本标准差
的计算。ddof=0
。进行 总体标准差
的计算。numeric_only : bool, default False
numeric_only
参数,用于控制是否 排除非纯数值的行或列:
Series
此参数无效。?? 相关方法
标准差(样本标准差/总体标准差)
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。
Series
始终保持 axis=0
,即计算整列的标准差。import numpy as np
import pandas as pd
s = pd.Series([24.0, np.nan, 21.0, 33, 26], name="age")
s.std()
5.0990195135927845
import numpy as np
import pandas as pd
s = pd.Series([np.NaN, np.NaN])
s.std()
nan
ddof=0
将计算 总体标准差。观察计算样本标准差的结果
import numpy as np
import pandas as pd
s = pd.Series([21, 25, 62, 43])
s.std()
18.786076404259266
观察计算总体标准差的结果
import numpy as np
import pandas as pd
s = pd.Series([21, 25, 62, 43])
s.std(ddof=0)
16.269219403523945