5
我想在Pandas ByGroup中应用scipy.stats.linregress。我已通过的文档看了,但我能看到的是怎样的东西应用到单个列像如何在大熊猫中应用linregress
grouped.agg(np.sum)
或类似
grouped.agg('D' : lambda x: np.std(x, ddof=1))
功能,但我怎么应用它有两个输入的linregress X和Y?
我想在Pandas ByGroup中应用scipy.stats.linregress。我已通过的文档看了,但我能看到的是怎样的东西应用到单个列像如何在大熊猫中应用linregress
grouped.agg(np.sum)
或类似
grouped.agg('D' : lambda x: np.std(x, ddof=1))
功能,但我怎么应用它有两个输入的linregress X和Y?
linregress
函数以及许多其他scipy/numpy函数接受“类似数组的”X和Y,Series和DataFrame都可以使用。
例如:
from scipy.stats import linregress
X = pd.Series(np.arange(10))
Y = pd.Series(np.arange(10))
In [4]: linregress(X, Y)
Out[4]: (1.0, 0.0, 1.0, 4.3749999999999517e-80, 0.0)
事实上,能够使用SciPy的(和numpy的)功能是大熊猫杀手锏之一!使用GROUPBY你同样可以apply
(每个组)
linregress(df['col_X'], df['col_Y'])
,如果:
所以,如果你有一个数据帧就可以使用linregress在其列(这是系列)
grouped.apply(lambda x: linregress(x['col_X'], x['col_Y']))
谢谢安迪,是的,它可以接受它。问题是如何去做BYPOUP。例如,我有日期时间,我已经GROUPED到年和月。我想为每个组做线性回归,然后从lin回归中返回值。另外我有一个DataFram,所以我怎样才能在DF中使用两列?谢谢杰森 – user1911866 2013-02-10 09:37:25
@ user1911866更新了这些:)祝你好运。 – 2013-02-10 10:05:19
@ user1911866也请参阅[此问题及其答案](http://stackoverflow.com/questions/12410438/how-to-use-pandas-groupby-apply-without-adding-an-extra-index)。 – 2013-02-10 19:31:54