2016-04-01 7 views
5

Ich bin mit OLS Regression pandas.stats.api.ols ein groupby mit dem folgenden Code:Drucke OLS Regression Zusammenfassung Textdatei

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 

aber dies gibt den Fehler:

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

Ich habe über 2.000 Artikel in meiner Gruppe durch und wenn ich jedes ausdrucke, sehen sie ungefähr so ​​aus:

-

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

Ich möchte in der Lage sein, jeden zu einem CSV zu exportieren, so dass ich sie einzeln anzeigen kann.

+0

Ich glaube, die 'ols.summary()' ist eigentlich Ausgabe als Text, nicht als ein 'Datenrahmen'. Ich habe normalerweise zum Drucken auf eine oder mehrere Textdateien für die Speicherung zurückgegriffen. – Stefan

+0

wenn ich versuche, etwas wie: 'für i im Ergebnis: i.to_csv (os.path.join (outpath, i + '. Csv')' es gibt 'AttributeError: 'OLS' Objekt hat kein Attribut 'to_csv'' –

+0

Welche "OLS" Routine verwendest du? 'Statsmodels'? – Stefan

Antwort

3

Um die result von pandas.stats.api.ols zu schreiben, eine Textdatei verwenden, um das Ausgabeformat anzupassen, zum Beispiel:

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

dies zurückgegeben, 'Datei" F:/Python-Codes/OLS_Regress .py ", Zeile 35, in text_file.write (Ergebnis) TypeError: erwartet eine Zeichenfolge oder ein anderes Zeichenpufferobjekt" –

+0

hinzugefügt '.summary()' zu 'result', was ein' OLS' Objekt sein sollte mit diesen Methoden, die wiederum die Textausgabe produziert.Siehe https://github.com/pydata/pandas/blob/master/pandas/stats/ols.py – Stefan

+0

hmm, immer noch retu rns 'Datei "F:/python-Codes/OLS_regress.py", Zeile 35, in text_file.write (result.summary()) Typeerror: 'str' Objekt callable' nicht, halten Ill das Spiel mit es zwar –

Verwandte Themen