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

如何对pandas DataFrame每行计算95% t分布置信区间,适配大规模数据?

实现方案

完全可以实现,数百行规模的DataFrame用常规方法就能轻松处理,超大规模数据也可以用向量化方案优化性能。

前置依赖

需要用到pandas、numpy和scipy三个库,导入方式如下:

import pandas as pd
import numpy as np
from scipy import stats

方法1:逐行计算(适配数百~数千行规模)

直接通过apply按行迭代计算95%置信区间,代码简单易读:

# 构造示例DataFrame
df = pd.DataFrame({'nums_1': [1, 2, 3], 'nums_2': [1, 1, 5], 'nums_3' : [8,7,9]})

# 按行计算95%置信区间,拆分结果为上下限两列
df[['ci_95_lower', 'ci_95_upper']] = df.apply(
    lambda row: stats.t.interval(
        confidence=0.95,
        df=len(row)-1, # 自由度为样本量减1
        loc=row.mean(),
        scale=stats.sem(row) # 标准误
    ),
    axis=1,
    result_type='expand'
)

方法2:向量化计算(适配万行以上超大规模)

如果需要处理十万级以上行数的DataFrame,推荐用向量化运算代替逐行迭代,性能提升10~100倍:

n = df.shape[1] # 每行的样本量
# 全局计算均值、标准误、t临界值,无逐行遍历开销
row_mean = df.mean(axis=1)
row_sem = df.std(axis=1, ddof=1) / np.sqrt(n)
t_critical = stats.t.ppf(1 - (1-0.95)/2, df=n-1)

# 直接批量计算所有行的置信区间上下限
df['ci_95_lower'] = row_mean - t_critical * row_sem
df['ci_95_upper'] = row_mean + t_critical * row_sem

两种方法计算结果完全一致,可根据自身数据规模选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:03