2016-04-01 26 views
5

Sono in esecuzione regressione OLS usando pandas.stats.api.ols utilizzando un groupby con il seguente codice:OLS Stampa riepilogo di regressione per file di testo

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 

ma questo restituisce l'errore:

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

Ho circa 2.000 articoli nel mio gruppo da e quando stampo ognuno di essi assomigliano a qualcosa del genere:

-

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

Desidero essere in grado di esportare ciascuno in un CSV in modo che sia possibile visualizzarli singolarmente.

+0

Credo che il 'ols.summary()' in realtà è uscita come testo, non come 'DataFrame'. In genere ho fatto ricorso alla stampa su uno o più file di testo per l'archiviazione. – Stefan

+0

quando provo qualcosa come: 'for i in result: i.to_csv (os.path.join (outpath, i + '. Csv')' restituisce 'AttributeError: 'OLS' l'oggetto non ha attributo 'to_csv'' –

+0

Quale routine 'OLS' stai usando?' Statsmodels'? – Stefan

risposta

3

Al fine di scrivere il result di pandas.stats.api.ols, utilizzare un file di testo in modo che corrisponda il formato di output, per esempio:

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

questo restituito,' File "F:/python codes/OLS_regress .py", linea 35, in text_file.write (risultato) TypeError: prevista una stringa o un altro buffer di caratteri object' –

+0

aggiunti' .summary() 'a' result', che dovrebbe essere un oggetto 'OLS' con questi metodi, che a sua volta produce l'output del testo. Vedere https://github.com/pydata/pandas/blob/master/pandas/stats/ols.py – Stefan

+0

hmm, ancora aggiornato RNS 'file "F: codici/Python/OLS_regress.py", linea 35, in text_file.write (result.summary()) TypeError: 'str' oggetto non viene callable', Ill continuano a giocare con però è –