
這是一個C ++分析庫,旨在用於數據分析,類似於Python和R中的庫。例如,您將其與Pandas或R Data進行比較。
您可以以多種不同的方式將數據切成薄片。您可以加入,合併,分組數據。您可以在數據上運行各種統計,摘要,財務和ML算法。您可以輕鬆添加自定義算法。您可以進行多列排序,自定義選擇並刪除數據。還有更多…
DataFrame還包括大量以訪問者形式的分析算法。這些來自基本統計數據,例如均值,性病偏差,返回,……到更多涉及的分析,例如親和力傳播,多項式擬合,任意長度的快速傅立葉變換……包括良好的交易指標集合。您也可以輕鬆添加自己的算法。
對於大型數據集,DataFrame還在其幾乎所有API中都採用了廣泛的多線程。這使得數據框特別適合分析大型數據集。
要開始您的基本操作,請參閱Hello World。有關包含代碼示例的功能的完整列表,請參見文檔。
我遵循了這個圖書館的一些原則:
您可能聽說過Polars DataFrame。它是在Rust中實現的,並以零重點移植到Python(只要您沒有循環)。許多人要求我為DataFrame與Polars撰寫比較。因此,我終於找到了一些時間來學習有關Polars並編寫非常簡單的基準測試的時間。
我為Porars和C ++ DataFrame(和Pandas)編寫了以下相同的程序。我使用Polars版本:0.19.14(Pandas版本:1.5.3,Numpy版本:1.24.2)。我將C ++ 20 clang編譯器與-O3選項。我在MacBook Pro(Intel Chip,96GB RAM)上跑了兩個。
在這兩種情況下,我都創建了一個帶有3個隨機列的數據框。 C ++ DataFrame還需要一個相同大小的額外索引列。 Polars不相信索引列(這有自己的利弊。我在這裡不經歷它)。每個程序都有三個相同的部分。首先,它生成和填充3列,每個列有每個300m隨機數(如果在C ++數據框架中,它還必須生成相同大小的順序索引列)。那是我不感興趣的部分。在第二部分中,它計算第一列的平均值,第二列的方差以及第二列和第三列的Pearson相關性。在第三部分中,它在其中一列上進行選擇(或按Polars稱為polars)。
結果:
我可以加載到Porars的最大數據集為每列300m行。任何較大的數據集都炸毀了內存,並導致OS殺死它。我用每列10B行運行了C ++數據框,並且我敢肯定,它也可以使用更大的數據集運行。因此,我被迫用300m行進行比較。我進行了每次測試4次,並花了最佳時間。從一個運行到另一種運行,尤其是計算時間和選擇時間,Polars的數字差異很大。 C ++數據框架的數字明顯更加一致。
| C ++數據框 | 方面 | 貓熊 | |
|---|---|---|---|
| 數據生成/加載時間 | 26.945900秒 | 28.468640秒 | 36.678976秒 |
| 計算時間 | 1.260150秒 | 4.876561秒 | 40.326350秒 |
| 選擇時間 | 0.742493秒 | 3.876561秒 | 8.326350秒 |
| 總體時間: | 28.948600秒 | 36.876345秒 | 85.845114秒 |
請考慮贊助數據框架,尤其是如果您以生產能力使用它。這是最強烈的欣賞形式