1,500,000 개의 행을 가진 dataFrame이 있습니다. QuantQuote.com에서 구입 한 1 분 단위의 주식 시장 데이터. (열기, 높음, 낮음, 닫기, 볼륨). 나는 주식 시장 거래 전략의 몇 가지 집에서 만든 백 테스트를 실행하려고합니다. 트랜잭션을 처리하는 직선 Python 코드가 너무 느리고 Numba를 사용하여 작업 속도를 높이려고했습니다. 문제는 Numba가 팬더 기능을 사용하지 못하는 것입니다. https://groups.google.com/a/continuum.io/forum/#!topic/numba-users/ZNfJtXeH2Lc효율적인 방법으로 팬더 처리하기 Numba로 데이터 프레임 timeseries
Google 검색을 사용하면 numba를 팬더와 함께 사용하는 것에 대한 놀라운 정보가 누설됩니다. 내가 그것을 고려하여 실수를 저지르고 있는지 궁금하게 만든다.
내 설정은 Numba 0.13.0-1, Pandas 0.13.1-1입니다. 윈도우 7, PTVS, 파이썬 2.7와 MS VS2013, Enthought 캐노피
내 기존 파이썬 + 팬더 innerloop는 다음과 같은 일반적인 구조를 pd.ewma, pd.rolling_max, PD와
계산 "표시"열을 (가지고 있습니다. rolling_min etc.) 이동 평균 십자가, 새로운 최고 등과 같은 미리 결정된 이벤트에 대한 "이벤트"열을 계산하십시오.
그런 다음 DataFrame.iterrows를 사용하여 DataFrame을 처리합니다.
나는 다양한 최적화를 시도했지만 여전히 내가 원하는만큼 빠르지는 않았다. 그리고 최적화가 버그를 일으키고 있습니다.
행을 처리하기 위해 Numba를 사용하고 싶습니다. 접근 방법이 있습니까?
내 DataFrame은 실제로는 수레의 사각형이기 때문에 DataFrame.values와 같은 것을 사용하여 데이터에 액세스 한 다음 numba를 사용하여 행에 액세스하는 일련의 함수를 작성했습니다. 하지만 그것은 모든 타임 스탬프를 제거하고 그것이 가역적 동작이라고 생각하지 않습니다. DataFrame.values에서 가져온 값 행렬이 데이터의 복사본이 아닌지 여부는 확실하지 않습니다.
도움을 주시면 대단히 감사하겠습니다.
코드를 별도의 질문으로 게시하고 여기 사람들이 벡터화에 도움이되는지 확인해야합니다. IMHO 실제로 numba를 판다로 사용하는 많은 이유가 벡터화 (반복 없음)로 훨씬 더 많은 작업을 수행 할 수 있습니다.pandas는 대부분의 작업이 최적화되도록 후드에서 cython을 사용합니다. 코드를 수정 한 다음 최적화하십시오. 질문에 대답하기 위해''df.values''를 사용하여 원하는 경우 기본 배열을 얻고 처리 할 수 있지만 원하는 경우 DataFrame으로 다시 변환 할 책임이 있습니다. – Jeff
완전히 벡터화 된 방식으로 데이터를 처리 할 수 없습니다. 그리고 결과를 분석하기 위해이 https://www.dropbox.com/s/p66mvp54dymi7hv/TABLE_AAPL.TXT.png처럼 보이는 매우 큰 PNG 파일을 생성합니다. 나는 Chaco와 함께 고문을해서 이러한 것들을 빠르게 계획한다. 보시다시피, 중간 결과를 저장하기 위해 많은 열이 생성됩니다. 단일 거래의 처리는 이제 80 줄 길이의 함수입니다. 내 전형적인 전략에 대한 내부 루프는 현재 비선형 파이썬 + 팬더의 약 350 행입니다. 이 상황에서 버그를 피하기가 어렵습니다. 그 최적화에 의해 비 대한. 나는 모두가 벡터화 보이는 것으로, 카피 – JasonEdinburgh
@Jeff http://pastebin.com/AaifFYnk – JasonEdinburgh