我有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

关于python - 根据 Pandas 第一栏的多元线性回归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43289985/

10-12 23:47