У меня есть DataFrame с 1 500 000 строк. Это одноминутные данные фондового рынка, которые я купил на QuantQuote.com. (Открытие, Максимум, Минимум, Закрытие, Объем). Я пытаюсь провести несколько самодельных тестов торговых стратегий на фондовом рынке. Прямой код Python для обработки транзакций слишком медленный, и я хотел попробовать использовать numba, чтобы ускорить процесс. Проблема в том, что numba, похоже, не работает с функциями pandas.
Поисковые запросы в Google обнаруживают удивительную нехватку информации об использовании numba с пандами. Что заставляет меня задуматься, не ошибаюсь ли я, размышляя над этим.
Моя установка: Numba 0.13.0-1, Pandas 0.13.1-1. Windows 7, MS VS2013 с PTVS, Python 2.7, Enthought Canopy
Моя существующая внутренняя петля Python + Pandas имеет следующую общую структуру
- Вычислить «индикаторные» столбцы (с помощью pd.ewma, pd.rolling_max, pd.rolling_min и т. Д.)
- Вычислите столбцы «событий» для заранее определенных событий, таких как пересечения скользящих средних, новые максимумы и т. Д.
Затем я использую DataFrame.iterrows для обработки DataFrame.
Я пробовал разные оптимизации, но все еще не так быстро, как хотелось бы. И оптимизации вызывают ошибки.
Я хочу использовать numba для обработки строк. Есть ли какие-нибудь предпочтительные методы решения этой проблемы?
Поскольку мой DataFrame на самом деле представляет собой прямоугольник с плавающей запятой, я рассматривал возможность использования чего-то вроде DataFrame.values для получения доступа к данным, а затем написать серию функций, которые используют numba для доступа к строкам. Но при этом удаляются все временные метки, и я не думаю, что это обратимая операция. Я не уверен, что матрица значений, которую я получаю из DataFrame.values, гарантированно не будет копией данных.
Любая помощь приветствуется.
df.values
для получения базового массива numpy и обработки, если хотите, но тогда вы будете ответственны за перевод обратно в DataFrame (если хотите). - person Jeff   schedule 13.05.2014