
이것은 Python 및 R의 라이브러리와 유사한 데이터 분석을 위해 설계된 C ++ 분석 라이브러리입니다. 예를 들어,이를 Pandas 또는 R Data.frame과 비교할 수 있습니다.
여러 가지 방법으로 데이터를 슬라이스 할 수 있습니다. 데이터에 가입, 병합, 그룹별로 연결할 수 있습니다. 데이터에 대한 다양한 통계, 요약, 재무 및 ML 알고리즘을 실행할 수 있습니다. 사용자 정의 알고리즘을 쉽게 추가 할 수 있습니다. 멀티 컬럼 정렬, 사용자 정의 선택 및 데이터를 삭제할 수 있습니다. 그리고 더 많은…
DataFrame에는 방문자 형태의 많은 분석 알고리즘이 포함되어 있습니다. 이들은 평균 , STD 편차 , 리턴 ,… 친화력 전파 , 다항식 적합 , 자의적 길이의 빠른 푸리에 변환과 같은 더 많은 관련 분석에 이르기까지 기본 통계에서 얻은 것입니다. 자신의 알고리즘을 쉽게 추가 할 수도 있습니다.
Dataframe은 또한 대형 데이터 세트에 거의 모든 API에서 광범위한 멀티 스레딩을 사용합니다. 따라서 데이터 프레임은 특히 대규모 데이터 세트를 분석하는 데 적합합니다.
기본 작업이 시작하려면 Hello World를 참조하십시오. 코드 샘플이 포함 된 전체 기능 목록은 문서를 참조하십시오.
이 라이브러리에서 몇 가지 원칙을 따랐습니다.
You have probably heard of Polars DataFrame. Rust로 구현되었으며 제로 오버 헤드로 Python으로 포팅됩니다 (루프가없는 한). 나는 많은 사람들에게 Dataframe과 Polars 의 비교를 쓰라는 요청을 받았습니다. 그래서 나는 마침내 폴라에 대해 조금 배우고 매우 간단한 벤치 마크를 쓸 시간을 찾았습니다.
폴라와 C ++ 데이터 프레임 (및 팬더) 모두에 대해 다음과 같은 동일한 프로그램을 작성했습니다. Polars 버전 : 0.19.14 (Pandas 버전 : 1.5.3, Numpy 버전 : 1.24.2)를 사용했습니다. 그리고 -O3 옵션과 함께 C ++ 20 Clang 컴파일러를 사용했습니다. 나는 다소 오래된 MacBook Pro (Intel Chip, 96GB RAM)를 모두 실행했습니다.
두 경우 모두 3 개의 임의의 열이있는 데이터 프레임을 만들었습니다. C ++ 데이터 프레임에는 동일한 크기의 추가 인덱스 열이 필요했습니다. 폴라는 인덱스 열을 믿지 않습니다 (자체 장단점이 있습니다. 여기서는 안됩니다). 각 프로그램에는 세 가지 부분이 있습니다. 먼저 각각 300m 랜덤 숫자로 3 개의 열을 생성하고 채 웁니다 (C ++ 데이터 프레임의 경우 동일한 크기의 순차적 인덱스 열을 생성해야합니다). 두 번째 부분에서는 첫 번째 열의 평균, 두 번째 열의 분산 및 두 번째 및 세 번째 열의 Pearson 상관 관계 를 계산합니다. 세 번째 부분에서는 열 중 하나에서 SELECT (또는 Polars가 호출되는 필터)를 수행합니다.
결과 :
폴라에로드 할 수있는 최대 데이터 세트는 열당 300m 행이었습니다. 더 큰 데이터 세트는 메모리를 날려 OS가 죽였습니다. 열당 10b 행으로 C ++ 데이터 프레임을 실행했으며 더 큰 데이터 세트로도 실행되었을 것입니다. 그래서 나는 비교하기 위해 300m 줄로 둘 다 달리기를 강요 받았다. 나는 각 테스트를 4 번 실행했고 가장 좋은 시간을 보냈습니다. 폴라 숫자는 한 달리에서 다른 실행, 특히 계산 및 선택 시간으로 크게 다릅니다. C ++ 데이터 프레임 숫자는 훨씬 더 일관성이있었습니다.
| C ++ 데이터 프레임 | 폴라 | 팬더 | |
|---|---|---|---|
| 데이터 생성/로드 시간 | 26.945900 SECS | 28.468640 초 | 36.678976 SECS |
| 계산 시간 | 1.260150 초 | 4.876561 SECS | 40.326350 초 |
| 선택 시간 | 0.742493 초 | 3.876561 SECS | 8.326350 초 |
| 전체 시간 : | 28.948600 초 | 36.876345 초 | 85.845114 SECS |
특히 생산 능력으로 사용하는 경우 데이터 프레임을 후원하는 것을 고려하십시오. 가장 강력한 형태의 감사입니다