根据 pandas 中第一列的多元线性回归

Multiple linear regressions according to first column in pandas

pandas.DataFrame喜欢:

    A    D    V
0  329    0  138
1  329   42  137
2  329   72  141
3  329  106  141
4  329  135  138
5  800    0  150
6  800   30  160
......

现在我想,对于'A'中的每个名字,我想用对应的数字做线性回归。

例如,对于 '329',我想使用 ['0', '42', '72', '106', '135']['138', '137', '141', '141', '138'] 进行线性回归。

我该怎么做?

如果您使用 pandas.DataFrame.groupby(),您可以分别处理每个名称:

代码:

import numpy as np

def interp(group):
    return list(np.polyfit(group['D'].values, group['V'].values, 1))

# used as
df.groupby('A').apply(interp)

测试代码:

import pandas as pd
df = pd.read_fwf(StringIO(u"""        A    D    V
    329    0  138
    329   42  137
    329   72  141
    329  106  141
    329  135  138
    800    0  150
    800   30  160"""))

print(df.groupby('A').apply(interp))

结果:

A
329    [0.0122277757944, 138.131827919]
800             [0.333333333333, 150.0]
dtype: object