
这是一个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秒 |
请考虑赞助数据框架,尤其是如果您以生产能力使用它。这是最强烈的欣赏形式