2016-04-01 32 views
5

Aşağıdaki kod ile bir groupby kullanılarak pandas.stats.api.ols kullanarak OLS regresyon çalıştırıyorum:Baskı EKK regresyon özeti

from pandas.stats.api import ols 
df=pd.read_csv(r'F:\file.csv') 

result=df.groupby(['FID']).apply(lambda d: ols(y=d.loc[:, 'MEAN'], x=d.loc[:, ['Accum_Prcp', 'Accum_HDD']])) 
for i in result: 
    x=pd.DataFrame({'FID':i.index, 'delete':i.values}) 
    frame = pd.concat([x,DataFrame(x['delete'].tolist())], axis=1, join='outer') 
    del frame['delete'] 
    print frame 

ama bu hatayı döndürür:

AttributeError: 'OLS' object has no attribute 'index' 

Ben yaklaşık 2,000 ürün yok Grubumda ve her birini yazdırdığımda şu gibi bir şey görüyorlar:

-

------------------------Summary of Regression Analysis------------------------- 

Formula: Y ~ <Accum_Prcp> + <Accum_HDD> + <intercept> 

Number of Observations:   79 
Number of Degrees of Freedom: 3 

R-squared:   0.1242 
Adj R-squared:  0.1012 

Rmse:    0.1929 

F-stat (2, 76):  5.3890, p-value:  0.0065 

Degrees of Freedom: model 2, resid 76 

-----------------------Summary of Estimated Coefficients------------------------ 
     Variable  Coef Std Err  t-stat p-value CI 2.5% CI 97.5% 
-------------------------------------------------------------------------------- 
    Accum_Prcp  0.0009  0.0003  3.28  0.0016  0.0004  0.0015 
    Accum_HDD  0.0000  0.0000  1.98  0.0516  0.0000  0.0000 
    intercept  0.4750  0.0811  5.86  0.0000  0.3161  0.6340 
---------------------------------End of Summary--------------------------------- 

Her birini ayrı ayrı görüntüleyebilmem için her birini bir csv'ye vermek istiyorum. pandas.stats.api.ols ait result, örneğin, çıktı biçimini eşleştirmek için bir metin dosyası kullanmak yazmak için

+0

Ben 'ols.summary inanıyorum()' aslında metin olarak çıktı, değil bir DataFrame olarak. Genelde depolama için bir veya daha fazla metin dosyasına yazdırmaya başvurdum. – Stefan

+0

Şunun gibi bir şey denediğimde: 'i sonuç olarak: i.to_csv (os.path.join (outpath, i + '. Csv')' döndürür AttributeError: 'OLS' nesnesinin 'to_csv' özelliği yoktur –

+0

Hangi 'OLS 'rutin kullanıyorsunuz?' Statsmodels'? – Stefan

cevap

3

:

from pandas.stats.api import ols 
grps = df.groupby(['FID']) 
for fid, grp in grps: 
    result = ols(y=grp.loc[:, 'MEAN'], x=grp.loc[:, ['Accum_Prcp', 'Accum_HDD']]) 

    text_file = open("Output {}.txt".format(fid), "w") 
    text_file.write(result.summary) 
    text_file.close() 
+0

bu döndü,' Dosya: F:/python codes/OLS_regress , text_file.write hattı 35, (sonuç) TypeError ".py: –

+0

result'' e '') (.summary ilave Nesnesi' bir 'OLS' nesne olmalıdır ki, bir dizi veya başka bir karakter tamponu beklenen sırayla metin çıktısını üreten bu yöntemlerle bkz. https://github.com/pydata/pandas/blob/master/pandas/stats/ols.py – Stefan

+0

hmm, yine de retu RNS 'Dosya: text_file.write içinde "F/piton kodları/OLS_regress.py", hat 35, (result.summary()) TypeError: 'str' nesne callable' değildir Ill etrafında oynamaya devam –