# Excel → 剪贴板 → Python 双因子分析模板#响应变量:x#因素:a, bimport pandas as pdimport statsmodels.api as smfrom statsmodels.formula.api import ols# 1. 从剪贴板读入数据 ----------------------------------------------------------# 要求 Excel 复制的是“矩形数据块”,第一行为列名df = pd.read_clipboard() # 2. 快速查看 ------------------------------------------------------------------print(df.head())print(df.info())# 3. 列联表 --------------------------------------------------------------------cross_tab = pd.crosstab(df['a'], df['b'], margins=True)print(cross_tab)# 4. 按 a、b 分组计算 x 的均值 --------------------------------------------------
mean_df = df.groupby(['a', 'b'])['x'].mean().reset_index()
print(mean_df)# 5. 按 a、b 分组计算 x 的标准差 -----------------------------------------------sd_df = df.groupby(['a', 'b'])['x'].std(ddof=1).reset_index() print(sd_df)# 6. 双因子方差分析(含交互项) -------------------------------------------------model = ols('x ~ C(a) * C(b)', data=df).fit()
anova_table = sm.stats.anova_lm(model, typ=2)
anova(fit)print(anova_table)