You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Pandas DataFrame执行逐元素运算以构建95%置信区间

双DataFrame逐元素计算95%置信区间的高效实现

利用Pandas原生向量化运算能力,无需循环即可完成逐元素的置信区间计算,实现方案如下:

首先补全示例代码缺失的依赖导入:

import pandas as pd
import numpy as np
import scipy.stats as st

rows = (1, 2)
col1 = ["mean_x", "mean_y"]
col2 = ["std_x", "std_y"]

data1 = ([10, 20], [5, 10])
data2 = ([1, 2], [0.5, 1])

df1 = pd.DataFrame(data1, index = rows, columns = col1)
df2 = pd.DataFrame(data2, index = rows, columns = col2)

核心运算步骤:

  • 计算95%双侧置信区间对应的Z临界值
    z_critical = st.norm.ppf(0.975)
  • 对齐两个DataFrame的列名,保证均值和标准误按变量一一对应
    df2.columns = df1.columns
  • 逐元素计算置信区间上下限
    ci_low = df1 - z_critical * df2
    ci_high = df1 + z_critical * df2
    
  • 按需生成最终结果表:
    1. 单变量列存储(下限, 上限)元组格式
    df_ci = pd.DataFrame({
        col: list(zip(ci_low[col].round(2), ci_high[col].round(2)))
        for col in df1.columns
    }, index=df1.index)
    
    1. 拆分上下限列的宽表格式
    df_ci = ci_low.join(ci_high, lsuffix='_lower', rsuffix='_upper').sort_index(axis=1)
    

提示:如果两个DataFrame的索引、列顺序不是严格对应,可先执行df1, df2 = df1.align(df2.rename(columns=lambda x: x.replace('std_', 'mean_')), join='inner')自动对齐行列,避免运算错误。

使用示例数据运行后,元组格式的输出结果如下:

indexmean_xmean_y
1(8.04, 11.96)(16.08, 23.92)
2(4.02, 5.98)(8.04, 11.96)

内容的提问来源于stack exchange,提问作者Cooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:09:03