2012-08-06 8 views
1

statsmodels에 의해 생성 된 결과에서 변수 이름에 액세스하려고합니다. 예제 코드 다음에 더 자세히 설명 할 것이다.팬더 및 통계 모델을 사용할 때 변수 이름을 가져 오기

import scikits.statsmodels.api as sm 
import pandas as pd 
data = sm.datasets.longley.load() 
df = pd.DataFrame(data.exog, columns=data.exog_name) 
y = data.endog 
df['intercept'] = 1. 
olsresult = sm.OLS(y, df).fit() 

이 요약 출력에는 변수 이름이 포함됩니다. 당신이 olsresult.params 같은 것을 호출 할 때 다음과 같은 반환

In [21]: olsresult.params 
Out[21]: 
GNPDEFL   15.061872 
GNP    -0.035819 
UNEMP    -2.020230 
ARMED    -1.033227 
POP    -0.051104 
YEAR   1829.151465 
intercept -3482258.634596 

을 지금은 키와 값으로 매개 변수 값으로 변수 이름과 사전 같은 것을 만드는 일에 대해 궁금 것을. 그래서 {'GNPDELF':15.0618, 'GNP':-0.035819}과 같은 것입니다. 이것을 할 수 없다면 변수 이름과 값에 개별적으로 액세스하는 다른 방법이 있습니까?

답변

3

그것은 .. 항상 명백한 시도 가치 : ^)

In [14]: olsresult.params 
Out[14]: 
GNPDEFL   15.061872 
GNP    -0.035819 
UNEMP    -2.020230 
ARMED    -1.033227 
POP    -0.051104 
YEAR   1829.151465 
intercept -3482258.634597 

In [15]: dict(olsresult.params) 
Out[15]: 
{'ARMED': -1.0332268671737328, 
'GNP': -0.035819179292614578, 
'GNPDEFL': 15.061872271452557, 
'POP': -0.051104105653539733, 
'UNEMP': -2.0202298038172479, 
'YEAR': 1829.151464613984, 
'intercept': -3482258.6345966831} 

Series 객체의 .to_dict() 방법을 참조하십시오.

+0

어쩌면 처음 생각했을 것입니다. 고맙습니다! – user1074057

3

olsresult.params은 dict 같은 pandas.Series 개체입니다. 어쩌면 dict로 변환 할 필요가 없습니다.

In [12]: olsresult.params.get('GNP') 
Out[12]: -0.035819179292566283 

In [13]: olsresult.params['GNP'] 
Out[13]: -0.035819179292566283 

In [14]: for key, value in olsresult.params.iteritems(): 
    ....:  print key, value 
    ....: 
GNPDEFL 15.0618722714 
GNP -0.0358191792926 
UNEMP -2.02022980382 
ARMED -1.03322686717 
POP -0.0511041056537 
YEAR 1829.15146461 
intercept -3482258.6346 
+0

+1; 이것은 훌륭한 점입니다. 나는 XY 문제에 대해 비틀어 보았을 것입니다. 즉, OP가 요구 한 것을하는 방법에 대한 답이 될 수 있습니다. 사실 필요하지 않다는 사실에 대해 생각하지 않았습니다! – DSM

관련 문제