我真的很喜欢R中的data.frames,因为你可以在一个数据结构中存储不同类型的数据,并且你有很多不同的方法来修改数据(添加列,合并数据。帧,...),它很容易从数据中提取子集,...Java对象模拟R data.frame
是否有任何可用的Java库具有相同的功能?我最感兴趣的是以类矩阵的方式存储不同类型的数据,并能够提取数据的一个子集。
在Java中使用二维数组可以提供类似的结构,但添加一个列并随后提取最高k个记录要困难得多。
我真的很喜欢R中的data.frames,因为你可以在一个数据结构中存储不同类型的数据,并且你有很多不同的方法来修改数据(添加列,合并数据。帧,...),它很容易从数据中提取子集,...Java对象模拟R data.frame
是否有任何可用的Java库具有相同的功能?我最感兴趣的是以类矩阵的方式存储不同类型的数据,并能够提取数据的一个子集。
在Java中使用二维数组可以提供类似的结构,但添加一个列并随后提取最高k个记录要困难得多。
我刚刚开源了一个基于类型列(包括对原始值的支持)提供数据框的Java 8库Paleo的初稿。可以通过编程方式创建列(通过简单的构建器API),也可以从文本文件导入列。
详情请参阅README。
该项目从出生时起依然湿润 - 我对反馈/ PR,tia非常感兴趣!
不错,那是我非常想找的东西。您是否有计划将具有功能的Paleo库扩展到例如对数据记录进行排序或仅保留具有某些属性的记录等? – Michael
我很高兴你喜欢它!排序和切片绝对在我的名单上。哪一个更紧迫? – netzwerg
我有兴趣根据日期列重新采样数据帧。如果它提供了这种可能性,看看Paleo ...如果不是,如果可行的话,我会添加它! – Christophe
我以前没有玩过Guava的表格,但它们看起来与R的数据框非常相似。特别是,它可以提取特定的行或特定的列。另一方面,似乎并没有简单的方法*将给定的行或列添加到表中 – raptortech97
我最近在Java中工作时也发现自己需要数据框架结构。幸运的是,在编写一个非常基本的实现之后,我获得了批准将其作为开源发布。你可以在这里找到我的实现:Joinery -- Data frames for Java。欢迎贡献和功能请求。
请务必注意,细木工是GPL3许可的,因此可能不适用于许多用例 –
Tablesaw(https://github.com/lwhite1/tablesaw)是2015年开始的Java数据框,并在2017年进行了积极的开发。它的设计尽可能地扩展了而不牺牲易用性。其功能包括按行和列进行过滤,描述性统计,地图/缩小功能,交叉表,图表,机器学习。 Apache许可证。
在一次查询测试中,它在2 ms内从500,000,000条记录表中返回了500多条记录。
它还包括一个面向列的存储区,它比使用CSV文件小得多,速度也快得多。欢迎贡献,功能请求和简单的反馈。
Morpheus(http://www.zavtech.com/morpheus/docs/)提供了一个DataFrame类似于R.它是一个高性能的列存储数据结构,可以使数据在行或列维度中进行排序,分片,分组和集合。它还支持在内部使用Fork & Join框架对许多这些操作进行并行处理。
您可以轻松阅读&将数据写入CSV文件,数据库以及专有的JSON格式。适用于从Quandl,Google财经和其他人加载数据的适配器也可用。
它支持多种线性回归,主成分分析,线性代数和其他类型的分析支持。功能集仍然在增长,但它已经是一个非常有能力的框架。
在之前的工作中,我使用Object [] []'(行优先模式) 来编写类似的库 来存储数据。 您可以轻松地编写 你需要的所有操作方法(把它们写一次一个,在需要时):添加一列, 提取柱, 添加行, 提取一排, 'cbind' ,'rbind','merge','ddply'等。 由于他们受到R的启发, 大多数这些方法都有一个参数: 例如,要添加一个新列, 我会提供一个函数计算行的其余部分的值; 提取行,我会提供一个谓词,以指示要保留的行。 –
这也是我的想法。但我想也许已经有一个支持所有功能的库,以便我不必重新实现它:) – Michael
我还希望有一个实现data.frame的Java类。 – stackoverflowuser2010