Pandas.Series.std() 样本标准差/总体标准差 详解 含代码 含测试数据集 随Pandas版本持续更新

发布时间:2024年01月24日

关于Pandas版本: 本文基于 pandas2.2.0 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

传送门: Pandas API参考目录

传送门: Pandas 版本更新及新特性

传送门: Pandas 由浅入深系列教程

Pandas.Series.std()

Pandas.Series.std 方法用于返回 Series 的标准差,通过控制自由度参数 ddof 可以实现返回 样本标准差总体标准差

  • 传送门:标准差的概念

  • ?? 关于取样方法的说明(不纠结计算过程的同学请跳过):

    Pandas.Series.std 方法的默认 ddof=1,对当前数据计算 样本标准差

    • 并不是在你当前数据中取样后,再进行标准差计算。
    • 样本 指的是,当前准备计算标准差的数据,是你全部的数据中取出的部分样本。
    • 例如:你有一个数组[1, 2, 3, 4] ,使用Pandas.Series.std 计算标准差。无论是 ddof=1ddof=0 ,参与计算的数值总量nN,都是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?1i=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}} σ=Ni=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)

    • 返回 SeriesSeries ,依传输的数据结构而定。

参数说明:

axis 指定计算方向( 行或列)

  • axis : {0 or ‘index’}

    axis 参数,用于指定计算方向,即按行计算或按列计算标准差:

    • 对于 Series 此参数无效,将始终保持 axis=0,即计算整列的标准差。例1

skipna 忽略缺失值

  • skipna : bool, default False >

    skipna 参数,用于指定求标准差的时候是否忽略缺失值:

    • False: 不忽略,缺失值 在求标准差的时候,会被解析为浮点数 float 0.0
    • True: 忽略缺失值。

    ?? 注意 :

    如果整列都是缺失值,那么标准差结果是依然是NaN。 例2

ddof 自由度修正

  • ddof : int, default 1 例3

    ddof : Delta 自由度,用于计算的除数是 N-ddof ,其中 N 代表元素的数量。默认值为 1。

    • ddof=1 计算 样本标准差(默认)
    • ddof=0 计算 总体标准差
      • ddof=0 Series.std 的行为和 numpy.std 一致。
  • ??ddof 应该如何取值?:

    • 如果你准备计算标准差的数据,是某个总体数据集的一部分样本,你想通过这一部分样本对总体数据集的标准差进行无偏估计,则可以选择使 ddof=1 或保持默认。进行 样本标准差 的计算。
    • 如果你准备计算标准差的数据,就是你的总体数据集的全部,你可以选择使ddof=0 。进行 总体标准差 的计算。

numeric_only 排除非纯数值的行或列

  • numeric_only : bool, default False

    numeric_only 参数,用于控制是否 排除非纯数值的行或列:

    • 对于 Series 此参数无效。

相关方法:

?? 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png

测试文件下载位置

例1:如果是 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

例2:如果整列都是缺失值,那么标准差计算结果也是缺失值。

import numpy as np
import pandas as pd

s = pd.Series([np.NaN, np.NaN])

s.std()
nan

例3:控制自由度修正值,当 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
文章来源:https://blog.csdn.net/mingqinsky/article/details/135746479
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。