Вывод функции Python map () в Pandas DataFrame - PullRequest
1 голос
/ 10 декабря 2011

Я использую функцию python map () для передачи параметров в торговую модель и вывода результатов.Я использую itertools.product, чтобы найти все возможные комбинации двух параметров, а затем передаю эту комбинацию своей функции с именем «run».Функция run возвращает кадр данных pandas.Заголовок столбца представляет собой кортеж из двух параметров и коэффициента резкости возвращаемых данных.См. Ниже:

def run((x,y)): 
    ENTRYMULT = x
    PXITR1PERIOD = y

    create_trade()
    pull_settings()    
    pull_marketdata()
    create_position()
    create_pnl_output()

    return DataFrame(DF3['NETPNL'].values, index=DF3.index, columns=[(ENTRYMULT,PXITR1PERIOD,SHARPE)])

Моя функция main () использует функцию Pool () для запуска map () на всех 8 ядрах:

if __name__ == '__main__':    
global DF3
pool = Pool()    
test1 =pool.map(run,list(itertools.product([x * 0.1 for x in range(10,12)], range(100,176,25))))
print test1

Я понимаю, что функция map может выводить толькосписки.Вывод представляет собой список заголовка из возвращенного фрейма данных. Мой вывод из print test1 выглядит следующим образом:

[(1.0, 150, -8.5010673966997263)
2011-11-17  18.63                          
2011-11-18  17.86                          
2011-11-21  17.01                          
2011-11-22  15.92                          
2011-11-23  15.56                          
2011-11-24  15.56                          
2011-11-25  15.36                          
2011-11-28  15.18                          
2011-11-29  15.84                          
2011-11-30  NaN                            ,             (1.0, 175, -9.4016837593189102)
2011-11-17  22.63                          
2011-11-18  22.03                          
2011-11-21  21.36                          
2011-11-22  19.93                          
2011-11-23  19.77                          
2011-11-24  19.77                          
2011-11-25  19.68                          
2011-11-28  19.16                          
2011-11-29  19.56                          
2011-11-30  NaN                            ,             (1.1, 100, -20.255968672741457)
2011-11-17  12.03                          
2011-11-18  10.95                          
2011-11-21  10.03                          
2011-11-22  9.003                          
2011-11-23  8.221                          
2011-11-24  8.221                          
2011-11-25  7.903                          
2011-11-28  7.709                          
2011-11-29  6.444                          
2011-11-30  NaN                            ,             (1.1, 125, -18.178187305758119)
2011-11-17  14.64                          
2011-11-18  13.76                          
2011-11-21  12.89                          
2011-11-22  11.85                          
2011-11-23  11.34                          
2011-11-24  11.34                          
2011-11-25  11.16                          
2011-11-28  11.06                          
2011-11-29  10.14                          
2011-11-30  NaN                            ,             (1.1, 150, -14.486791104380069)
2011-11-17  26.25                          
2011-11-18  25.57                          
2011-11-21  24.76                          
2011-11-22  23.74                          
2011-11-23  23.48                          
2011-11-24  23.48                          
2011-11-25  23.43                          
2011-11-28  23.38                          
2011-11-29  22.93                          
2011-11-30  NaN                            ,             (1.1, 175, -12.118290962161304)
2011-11-17  24.66                          
2011-11-18  24.21                          
2011-11-21  23.57                          
2011-11-22  22.14                          
2011-11-23  22.06                          
2011-11-24  22.06                          
2011-11-25  22.11                          
2011-11-28  21.64                          
2011-11-29  21.24                          
2011-11-30  NaN                            ] 

Моя конечная цель - получить фрейм данных pandas с индексом (одинаковым для всех возвратов), столбецзаголовки (ENTRYMULT, PXITR1PERIOD, SHARPE) с соответствующими возвратами ниже.Затем я буду выполнять расчет парной корреляции для всех возвращаемых рядов.

1 Ответ

4 голосов
/ 12 декабря 2011

Я думаю, все, что вам нужно сделать, это:

data = DataFrame(dict(test1))

, что приведет к DataFrame, столбцы которого такие элементы, как (1.1, 175, -12.118290962161304)

в пандах 0.6.1 (скоро будет выпущен), вы также сможете сделать:

data = DataFrame.from_items(test1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...