如何使用pandas按条件筛选数据及解决statsmodels函数调用报错
问题排查与修复
- 核心错误为参数传递错误:你在
sm.stats.DescrStatsW()中传入的是列名参数variable(字符串类型),并非你筛选得到的对应列数值序列,需要替换为提前过滤好的subconjunto变量。 - 可选优化:建议将
cereal_df作为函数入参传入,避免依赖全局变量,减少作用域相关的潜在报错。
修正后代码
import statsmodels.api as sm import pandas as pd def valor_medio_intervalo(cereal_df, fabricante, variable, confianza): # 筛选对应厂商的目标列数据 subconjunto = cereal_df.loc[cereal_df['fabricante'] == fabricante, variable] # 传入筛选后的数值序列计算置信区间 inicio, final = sm.stats.DescrStatsW(subconjunto).tconfint_mean(alpha = 1 - confianza) return inicio, final
调用示例
如果你需要计算Kellogs厂商calorias列的95%置信区间,调用方式如下:
inicio, final = valor_medio_intervalo(cereal_df, "Kellogs", "calorias", 0.95) print(f"均值置信区间:[{inicio:.2f}, {final:.2f}]")
内容的提问来源于stack exchange,提问作者Juan David Serna
相关产品推荐
相关产品推荐

