根据 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
我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