如何将scipy stats.t.interval生成的置信区间四舍五入保留两位小数
解决方案
scipy.stats.t.interval 返回的是包含置信区间下限、上限的浮点型元组,直接对返回结果做逐元素四舍五入即可,有两种常用实现方式:
方式1:保留原CI列的元组结构
直接在lambda逻辑中对返回结果调用np.round()保留2位小数,再转回元组和原有格式对齐:
import pandas as pd import numpy as np from scipy import stats df = pd.DataFrame({'nums_1': [1, 2, 3], 'nums_2': [1, 1, 5], 'nums_3' : [8,7,9]}) df['CI'] = df.apply( lambda row: tuple(np.round( stats.t.interval(0.95, len(df)-1, loc=np.mean(row), scale=stats.sem(row)), 2 )), axis=1 )
方式2:拆分置信区间为独立两列
如果需要后续单独调用上下限数值,可以拆分存储为两个独立列,格式更友好:
df[['CI_lower', 'CI_upper']] = df.apply( lambda row: pd.Series( np.round(stats.t.interval(0.95, len(df)-1, loc=np.mean(row), scale=stats.sem(row)), 2) ), axis=1 )
两种方案都通过np.round(目标序列, 保留小数位数)实现精度控制,无需单独拆分元组再拼接处理。
内容的提问来源于stack exchange,提问作者Niam45
相关产品推荐
相关产品推荐

