Cómo iterar sobre columnas de un marco de datos de pandas
Tengo este código usando Pandas en Python:
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()
Sé que puedo ejecutar una regresión como esta:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
pero ¿ cómo puedo hacer esto para cada columna del marco de datos ? Específicamente, ¿cómo puedo iterar sobre columnas para ejecutar la regresión en cada una?
Específicamente, quiero hacer una regresión de cada símbolo de cotización (FIUIX, FSAIX y FSAVX) en FSTMX y almacenar los residuos para cada regresión.
Probé varias versiones de lo siguiente, pero nada de lo que probé da el resultado deseado:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
¿Hay algún problema con esa returns[k]
parte del código? ¿ Cómo puedo usar el k
valor para acceder a una columna? ¿O existe un enfoque más sencillo?
Antigua respuesta:
for column in df:
print(df[column])
La respuesta anterior todavía funciona, pero se agregó en la época de pandas 0.16.0. Hay mejores versiones disponibles.
Ahora puedes hacer:
for series_name, series in df.items():
print(series_name)
print(series)
Puedes usar iteritems()
:
for name, values in df.iteritems():
print('{name}: {value}'.format(name=name, value=values[0]))