Как перебирать столбцы базы данных pandas для запуска регрессии

Я уверен, что это просто, но как полный новичок на python, мне трудно понять, как перебирать переменные в кадре данных 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() 

но предположим, что я хочу сделать это для каждого столбца в dataframe. В частности, я хочу регрессировать FIUIX на FSTMX, а затем FSAIX на FSTMX, а затем FSAVX на FSTMX. После каждой регрессии я хочу сохранить остатки.

Я пробовал различные версии следующего, но я должен получить синтаксис неправильно:

 resids = {} for k in returns.keys(): reg = sm.OLS(returns[k],returns.FSTMX).fit() resids[k] = reg.resid 

Я думаю, проблема в том, что я не знаю, как обращаться к столбцу return по ключу, поэтому returns[k] , вероятно, неправильно.

Любые рекомендации относительно наилучшего способа сделать это будут высоко оценены. Возможно, есть общий подход панд, которого я пропускаю.

7 Solutions collect form web for “Как перебирать столбцы базы данных pandas для запуска регрессии”

 for column in df: print(df[column]) 

Вы можете использовать iteritems() :

 for name, values in df.iteritems(): print '{name}: {value}'.format(name=name, value=values[0]) 

Вы можете индексировать столбцы dataframe по позиции с помощью ix .

 df1.ix[:,1] 

Например, это возвращает первый столбец. (0 – индекс)

 df1.ix[0,] 

Это возвращает первую строку.

 df1.ix[:,1] 

Это будет значение на пересечении строк 0 и столбца 1:

 df1.ix[0,1] 

и так далее. Таким образом, вы можете enumerate() returns.keys(): и использовать число для индексации фрейма данных.

Обходной путь заключается в транспонировании DataFrame и DataFrame по строкам.

 for column_name, column in df.transpose().iterrows(): print column_name 

Я немного опаздываю, но вот как я это сделал. Шаги:

  1. Создать список всех столбцов
  2. Используйте itertools для принятия комбинаций x
  3. Прибавьте каждый результат R квадрат к кадру данных результата вместе с исключенным списком столбцов
  4. Сортируйте результат DF в порядке убывания квадрата R, чтобы увидеть, какая из них лучше всего подходит.

Это код, который я использовал в DataFrame под названием aft_tmt . Не стесняйтесь экстраполировать ваш прецедент.

 import pandas as pd # setting options to print without truncating output pd.set_option('display.max_columns', None) pd.set_option('display.max_colwidth', None) import statsmodels.formula.api as smf import itertools # This section gets the column names of the DF and removes some columns which I don't want to use as predictors. itercols = aft_tmt.columns.tolist() itercols.remove("sc97") itercols.remove("sc") itercols.remove("grc") itercols.remove("grc97") print itercols len(itercols) # results DF regression_res = pd.DataFrame(columns = ["Rsq", "predictors", "excluded"]) # excluded cols exc = [] # change 9 to the number of columns you want to combine from N columns. #Possibly run an outer loop from 0 to N/2? for x in itertools.combinations(itercols, 9): lmstr = "+".join(x) m = smf.ols(formula = "sc ~ " + lmstr, data = aft_tmt) f = m.fit() exc = [item for item in x if item not in itercols] regression_res = regression_res.append(pd.DataFrame([[f.rsquared, lmstr, "+".join([y for y in itercols if y not in list(x)])]], columns = ["Rsq", "predictors", "excluded"])) regression_res.sort_values(by="Rsq", ascending = False) 

Этот ответ состоит в том, чтобы перебирать выбранные столбцы, а также все столбцы в DF.

df.columns дает список, содержащий все имена колонок в DF. Теперь это не очень полезно, если вы хотите перебирать все столбцы. Но это пригодится, когда вы хотите перебирать только столбцы по вашему выбору.

Мы можем легко нарезать список Python, чтобы нарезать df.columns в соответствии с нашими потребностями. Например, для итерации по всем столбцам, кроме первого, мы можем:

 for column in df.columns[1:]: print(column) 

Аналогично итерации по всем столбцам в обратном порядке, мы можем сделать:

 for column in df.columns[::-1]: print(column) 

Используя эту технику, мы можем перебирать все столбцы множеством крутых способов. Также помните, что вы можете легко получить индексы всех столбцов:

 for ind, column in enumerate(df.columns): print(ind, column) 

Используя понимание списка, вы можете получить все имена столбцов (заголовок):

[column for column in df]

  • Доверительные интервалы для прогнозирования модели
  • Python statsmodels проблемы с настройкой параметров модели
  • t на кадры данных Pandas и создать новую матрицу из полученных значений p
  • не обратимся к модели ARIMA
  • Отсутствие перехватов регрессионных моделей OLS в статических моделях Python
  • Тест ADF в statsmodels в Python
  • Как я могу выполнить тест отношения правдоподобия на линейной модели смешанного эффекта?
  • В чем разница между pandas ACF и statsmodel ACF?
  •  
    Interesting Posts for Van-Lav

    Получить температуру процессора в python на окнах

    error: не удалось создать '/Library/Python/2.7/site-packages/xlrd': Permission denied

    Что такое локальное значение потока в фляге?

    Проверка валидации в WTForms не обновляется, когда база данных

    верните верхние n наиболее часто встречающихся символов и их соответствующие значения в python

    Как вычислить (alt, az) для данной галактической координаты (GLON, GLAT) с PyEphem?

    Импортирование SciPy или scikit-image "из scipy.linalg import _fblas: Ошибка импорта: сбой DLL"

    shebang: использовать интерпретатор относительно пути скрипта

    Сельдерей, комбу и джанго – ошибка импорта

    Чтение в CSV-файле как dataframe из hdfs

    Ошибка при загрузке ошибки python27.dll для pyinstaller

    Что такое правильный синтаксис для обмена значениями столбцов для выбранных строк в кадре данных pandas, используя только одну строку?

    Использование Regex для изменения имен файлов с помощью Python

    Можете ли вы помочь мне в этом упражнении на питоне?

    Как перезапустить оболочку IDLE Python в Linux?

    Python - лучший язык программирования в мире.