나는 이것이 간단하다고 확신하지만 파이썬의 초보자에게는 pandas
데이터 프레임 에서 변수를 반복 하고 각각과 회귀를 실행하는 방법을 알아내는 데 어려움을 겪고 있습니다.
내가하고있는 일은 다음과 같습니다.
all_data = {}
for ticker in ['FIUIX', 'FSAIX', 'FSAVX', 'FSTMX']:
all_data[ticker] = web.get_data_yahoo(ticker, '1/1/2010', '1/1/2015')
prices = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()})
returns = prices.pct_change()
다음과 같이 회귀를 실행할 수 있다는 것을 알고 있습니다.
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
그러나 데이터 프레임의 각 열에 대해이 작업을 수행하려고한다고 가정하십시오. 특히 FSTMX에서 FIUIX를, FSTMX에서 FSAIX, FSTMX에서 FSAVX를 회귀하고 싶습니다. 각 회귀 후 잔차를 저장하고 싶습니다.
다음의 다양한 버전을 시도했지만 구문이 잘못되어 있어야합니다.
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
문제는 키로 리턴 열을 참조하는 방법을 모른다 returns[k]
는 것이므로 아마도 잘못된 것입니다.
이를 수행하는 가장 좋은 방법에 대한 지침은 대단히 감사하겠습니다. 아마도 내가 놓친 일반적인 팬더 접근법이있을 것입니다.
답변
for column in df:
print(df[column])
답변
당신은 사용할 수 있습니다 iteritems()
:
for name, values in df.iteritems():
print('{name}: {value}'.format(name=name, value=values[0]))
답변
이 답변은 선택한 열과 DF의 모든 열 을 반복 하는 것입니다.
df.columns
DF의 모든 열 이름을 포함하는 목록을 제공합니다. 이제 모든 열을 반복하려는 경우별로 도움이되지 않습니다. 그러나 선택한 열만 반복하려고 할 때 유용합니다.
파이썬의리스트 슬라이싱을 사용하여 필요에 따라 df.columns를 쉽게 슬라이스 할 수 있습니다. 예를 들어 첫 번째 열을 제외한 모든 열을 반복하려면 다음을 수행하십시오.
for column in df.columns[1:]:
print(df[column])
모든 열을 역순으로 반복하는 것과 마찬가지로 다음과 같이 할 수 있습니다.
for column in df.columns[::-1]:
print(df[column])
이 기법을 사용하여 모든 열을 여러 가지 멋진 방법으로 반복 할 수 있습니다. 또한 다음을 사용하여 모든 열의 인덱스를 쉽게 얻을 수 있습니다.
for ind, column in enumerate(df.columns):
print(ind, column)
답변
을 사용하여 위치별로 데이터 프레임 열을 색인 할 수 있습니다 ix
.
df1.ix[:,1]
예를 들어 첫 번째 열을 반환합니다. (0은 색인 일 것입니다)
df1.ix[0,]
첫 번째 행을 반환합니다.
df1.ix[:,1]
이것은 행 0과 열 1의 교차점에있는 값입니다.
df1.ix[0,1]
등등. 따라서 enumerate()
returns.keys():
숫자를 사용하여 데이터 프레임을 인덱싱 할 수 있습니다 .
답변
해결 방법은 DataFrame
행을 바꾸고 반복하는 것입니다.
for column_name, column in df.transpose().iterrows():
print column_name