当前位置: 首页 > web >正文

【Pandas】pandas DataFrame sem

Pandas2.2 DataFrame

Computations descriptive stats

方法描述
DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值
DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 True
DataFrame.any(*[, axis, bool_only, skipna])用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True
DataFrame.clip([lower, upper, axis, inplace])用于截断(限制)DataFrame 中的数值
DataFrame.corr([method, min_periods, …])用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix)
DataFrame.corrwith(other[, axis, drop, …])用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数
DataFrame.count([axis, numeric_only])用于统计 DataFrame 中每列或每行的非空(非 NaN)元素数量
DataFrame.cov([min_periods, ddof, numeric_only])用于计算 DataFrame 中每对列之间的协方差
DataFrame.cummax([axis, skipna])用于计算 DataFrame 中每列或每行的累计最大值(cumulative maximum)
DataFrame.cummin([axis, skipna])用于计算 DataFrame 中每列或每行的累计最小值(cumulative minimum)
DataFrame.cumprod([axis, skipna])用于计算 DataFrame 中每列或每行的累计乘积(cumulative product)
DataFrame.cumsum([axis, skipna])用于计算 DataFrame 中每列或每行的累计和(cumulative sum)
DataFrame.describe([percentiles, include, …])用于快速生成数据集的统计摘要(summary statistics)
DataFrame.diff([periods, axis])用于计算 DataFrame 中相邻行或列之间的差值(差分)
DataFrame.eval(expr, *[, inplace])用于在 DataFrame 上下文中高效地执行字符串形式的表达式运算
DataFrame.kurt([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的峰度(Kurtosis)
DataFrame.kurtosis([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的峰度(Kurtosis)
DataFrame.max([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的最大值(maximum)
DataFrame.mean([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的平均值(mean)
DataFrame.median([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的中位数(median)
DataFrame.min([axis, skipna, numeric_only])用于计算 DataFrame 中每列或每行的最小值(minimum)
DataFrame.mode([axis, numeric_only, dropna])用于查找 众数(出现频率最高的值) 的方法
DataFrame.pct_change([periods, fill_method, …])用于计算 百分比变化 的方法
DataFrame.prod([axis, skipna, numeric_only, …])用于计算 每列或每行元素的乘积 的方法
DataFrame.product([axis, skipna, …])用于计算 DataFrame 中每列或每行所有元素的乘积
DataFrame.quantile([q, axis, numeric_only, …])用于计算 分位数(Quantiles) 的方法
DataFrame.rank([axis, method, numeric_only, …])用于计算 DataFrame 中每列或每行元素的排名(rank)
DataFrame.round([decimals])用于对 DataFrame 中的数值进行四舍五入
DataFrame.sem([axis, skipna, ddof, numeric_only])用于计算 标准误(Standard Error of the Mean, SEM),即样本均值的标准差

pandas.DataFrame.sem()

pandas.DataFrame.sem() 方法用于计算 标准误(Standard Error of the Mean, SEM),即样本均值的标准差。它是对样本均值估计的不确定性的一种度量,常用于统计分析和假设检验。


📌 方法签名:
DataFrame.sem(axis=0, skipna=True, ddof=1, numeric_only=False)

🧾 参数说明:
参数类型默认值描述
axis{0/‘index’, 1/‘columns’}0
  • 0:按列计算 SEM(默认)
  • 1:按行计算 SEM |
    | skipna | bool | True | 是否跳过 NaN 值。若为 False,含 NaN 的列/行结果也为 NaN。 |
    | ddof | int | 1 | Delta Degrees of Freedom(自由度调整)。计算公式为:ddof = N - ddof,其中 N 是样本数量。默认使用 ddof=1(无偏估计)。 |
    | numeric_only | bool | False | 是否只考虑数值类型列(int、float),忽略布尔、字符串等非数值列 |

📊 返回值
  • 返回一个 Series,表示每列(或每行)的 SEM。
  • 若某列/行全为 NaN,则对应结果为 NaN

✅ 标准误(SEM)定义与公式:

S E M = s N SEM = \frac{s}{\sqrt{N}} SEM=N s

其中:

  • $ s $:样本标准差
  • $ N $:样本大小(非空值数量)

✅ 示例及结果
示例数据:
import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [1, 2, 3],'B': [10, 20, 30],'C': [100, 200, 300],'D': [5.5, 6.5, 7.5]
})

输出原始数据:

   A   B    C     D
0  1  10  100   5.5
1  2  20  200   6.5
2  3  30  300   7.5

示例 1:默认参数(按列计算 SEM)
df.sem()

结果:

A    0.577350
B    5.773503
C   57.735027
D    0.577350
dtype: float64

解释:

  • 每列的 SEM 是基于其标准差除以 √n 计算的。
  • 例如:列 A 的标准差是 1,样本数 n=3 → SEM = 1 / √3 ≈ 0.577

示例 2:按行计算 SEM(axis=1
df.sem(axis=1)

结果:

0    84.160503
1   111.099428
2   138.036224
dtype: float64

解释:

  • 每一行的 SEM 是该行所有数值的标准差除以 √n(n=4)
  • 第0行:标准差为 118.92,n=4 → SEM ≈ 118.92 / √4 = 59.46

⚠️ 注意:实际计算中会根据 ddof 调整自由度,默认 ddof=1,即使用样本标准差(n-1)来计算。


示例 3:包含 NaN 值时设置 skipna=False
df_with_nan = pd.DataFrame({'X': [1, 2, np.nan],'Y': [np.nan, 10, 20],'Z': [5, 5, 5]
})df_with_nan.sem(skipna=False)

结果:

X         NaN
Y         NaN
Z         NaN
dtype: float64

解释:

  • 含有 NaN 的列无法计算 SEM → 结果为 NaN

示例 4:设置 numeric_only=True 忽略非数值列
df_mixed = pd.DataFrame({'A': [1, 2, 3],'B': ['low', 'medium', 'high'],'C': [10.0, 20.0, 30.0]
})df_mixed.sem(numeric_only=True)

结果:

A     0.577350
C     5.773503
dtype: float64

解释:

  • 字符串列 B 被自动忽略

示例 5:修改 ddof 参数(改变自由度)
df.sem(ddof=0)  # 使用总体标准差(ddof=0)

结果:

A    0.471405
B    4.714045
C   47.140452
D    0.471405
dtype: float64

解释:

  • ddof=0 时,标准差是总体标准差(除以 n),因此 SEM 更小

⚠️ 注意事项
  • 只适用于数值型列(int、float)
  • 支持处理 NaN 值(通过 skipna 控制是否跳过)
  • ddof 控制标准差计算方式(影响最终 SEM)
  • 不会影响原始 DataFrame,返回新 Series

🎯 适用场景
场景描述
统计分析评估样本均值的稳定性
实验设计判断样本量是否足够精确
假设检验构建置信区间或 t 检验
可视化辅助配合误差条图(errorbar)展示均值不确定性

📋 总结
特性描述
功能计算 DataFrame 每列或每行的 SEM(标准误)
默认行为按列计算,跳过 NaN,使用样本标准差(ddof=1)
是否修改原数据否,返回新 Series
适用类型数值型列(int、float)
输出范围浮点数,通常较小(随样本量增大而减小)

sem() 是一个非常重要的统计方法,适合用于数据分析、实验设计、模型评估等任务,尤其是在需要衡量均值估计精度的场景中。

http://www.xdnf.cn/news/8200.html

相关文章:

  • 代码随想录算法训练营第60期第四十四天打卡
  • 在 Windows 的 Visual Studio 2017 中编译 ncnn Debug 版本
  • Eigen矩阵存储顺序以及转换
  • Ajax01-基础
  • AndroidStudio 2024.2.2发布apk时候备份mapping文件kts版本
  • Flannel后端为UDP模式下,分析数据包的发送方式——tun设备(三)
  • LeetCode 257. 二叉树所有路径的迭代解法:栈的妙用与类型设计深度解析
  • 即插即用性能提升技巧:YOLOv8集成OREPA卷积的5个关键步骤(附精度/速度对比)
  • 【软考向】Chapter 9 数据库技术基础
  • 【AI问答】Java类中,一些变量设置了@NotNull,怎么在调用内部方法时校验变量是否为空
  • nltk-英文句子分词+词干化
  • 【Node.js】工具链与工程化
  • 04-Web后端基础(基础知识)
  • (中级)中级前端开发者指南:深入理解并实践JavaScript
  • c/c++的opencv腐蚀
  • JDK7Hashmap的头插法造成的环问题
  • 深度学习相比传统机器学习的优势
  • JAVA日志规范
  • webpack构建速度和打包体积优化方案
  • AAOS系列之----启动流程
  • SAP消息号 M8476
  • Enhancing Relation Extractionvia Supervised Rationale Verifcation and Feedback
  • AI炒菜机器人+一酱成菜构建万店一味的“风味引擎”
  • JS不要太简单(一):基本介绍及环境搭建
  • leetcode每日一题 -- 3362. 零数组变换 III
  • 浅谈测试驱动开发TDD
  • 第六十五篇 深入浅出Java字节码执行机制:从咖啡杯到高速引擎的蜕变
  • PyQt学习系列02-模型-视图架构与数据管理
  • 家政维修平台实战:08搭建服务分类
  • Excel合并单元格后,如何自动批量生成序号列