2013-02-08 12 views
5

Pandalar ByGroup içinde scipy.stats.linregress uygulamak istiyorum. Ben belgelere baktım ama görebildiğim tek şeyPandas grupta linuxgress nasıl uygulanır

grouped.agg(np.sum) 

veya

grouped.agg('D' : lambda x: np.std(x, ddof=1)) 

gibi bir fonksiyonu Ama gibi tek sütuna bir şey nasıl uygulanacağını oldu ben İKİ girişi olan bir linregress uygulamak nasıl X ve Y mi?

cevap

4

Diğer birçok scipy/numpy işlevinin yanı sıra, linregress işlevinin yanı sıra, "dizi benzeri" X ve Y'yi kabul eder, hem Series hem de DataFrame hak kazanabilir. Örneğin

: Aslında

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 (ve numpy) işlevlerini kullanabilme pandalar katil özelliklerinden biridir! Benzer apply (her gruba) yapabilirsiniz bir GroupBy kullanılarak

linregress(df['col_X'], df['col_Y']) 

ve eğer: Eğer bir DataFrame varsa

Yani (Seri vardır) sütunlarından üzerinde linregress kullanabilirsiniz

grouped.apply(lambda x: linregress(x['col_X'], x['col_Y'])) 
+0

Teşekkürler Andy, Evet bunu kabul edebilir. Soru nasıl yapılacağı BYGROUP. Örneğin, yıl ve ay olarak GRUPLANMIŞ olduğum tarihlerim var. Grupların her biri için lineer regresyon yapmak istiyorum ve daha sonra değerleri lin regresyonundan döndürmek istiyorum. Ayrıca bir DataFram var, bu yüzden DF'de iki sütun kullanarak bunu nasıl uygulayabilirim? Teşekkürler Jason – user1911866

+0

@ user1911866 bunlarla güncellendi :) İyi şanslar. –

+0

@ user1911866 ayrıca, [bu soru ve cevabı] konusuna bakın (http://stackoverflow.com/questions/12410438/how-to-use-pandas-groupby-apply-without-adding-an-extra-index). –