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

Python Pandas中按组执行回归分析并提取系数的技术问询

按分组执行回归并提取系数的解决方案

没问题,这事儿很容易搞定!咱们用Python的pandas配合statsmodels就能快速实现你要的需求,具体步骤如下:

1. 导入所需库

首先得把需要的工具库导入进来:

import pandas as pd
import statsmodels.api as sm

2. 构造你的示例数据集

先把你给出的数据转换成DataFrame格式:

data = pd.DataFrame({
    'Group': [1,1,1,2,2,2],
    'Y': [10,5,3,4,2,3],
    'X': [6,4,1,6,4,9]
})

3. 定义回归函数

咱们写一个小函数,用来对每个分组的数据执行线性回归,然后返回自变量X的系数:

def get_regression_coeff(group):
    # 添加截距项(statsmodels的OLS需要显式指定)
    X = sm.add_constant(group['X'])
    Y = group['Y']
    # 拟合回归模型
    model = sm.OLS(Y, X).fit()
    # 返回X的系数(注意:索引为1的是X的系数,0是截距)
    return pd.Series({'Group': group['Group'].iloc[0], 'Coefficient': model.params[1]})

4. 按分组应用函数并整理结果

用groupby按Group分组,然后把刚才的函数应用到每个分组上,最后整理成你要的格式:

result = data.groupby('Group').apply(get_regression_coeff).reset_index(drop=True)

5. 查看最终结果

运行完上面的代码后,打印result就能得到你预期的格式:

print(result)

输出结果(实际运行会得到真实的回归系数,这里用你假设的数值示例):

Group  Coefficient
0      1         0.25
1      2         0.30

补充说明

  • 如果你的数据集里有缺失值,记得先做缺失值处理(比如data.dropna()),不然回归会报错
  • 如果你不需要截距项,可以去掉sm.add_constant()这一步,但通常线性回归都会包含截距
  • 除了statsmodels,你也可以用sklearn的LinearRegression,不过statsmodels的输出更偏向统计分析,提取系数也更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:34:10