Java对象类似于R data.frame

时间:2013-12-12 10:24:08

标签: java r dataframe

我真的很喜欢R中的data.frames,因为你可以在一个数据结构中存储不同类型的数据,并且你有很多不同的方法来修改数据(添加列,组合data.frames,...),它从数据中提取子集非常容易......

是否有可用的Java库具有相同的功能?我最感兴趣的是以类似矩阵的方式存储不同类型的数据,并能够提取数据的子集。

在Java中使用二维数组可以提供类似的结构,但是添加一个列并随后提取前k个记录要困难得多。

6 个答案:

答案 0 :(得分:14)

我刚刚开源了Paleo的初稿,这是一个Java 8库,它提供基于类型列的数据框(包括对原始值的支持)。可以通过编程方式(通过简单的构建器API)创建列,也可以从文本文件中导入列。

有关详细信息,请参阅README

该项目从出生开始仍然潮湿 - 我对反馈/ PR,tia非常感兴趣!

答案 1 :(得分:12)

Tablesaw(https://github.com/jtablesaw/tablesaw)是2015年开始的Java数据框架,目前正处于积极开发阶段(2018年)。它的设计尽可能地扩展,而不会牺牲易用性。功能包括按行和列过滤,描述性统计,地图/缩小功能,交叉表,绘图,机器学习。 Apache许可证。

在一次查询测试中,它在2毫秒内从一个20亿记录表中返回了500多条记录。

欢迎提供贡献,功能请求和反馈。

答案 2 :(得分:11)

我最近在使用Java时也发现自己需要数据框架结构。幸运的是,在编写了一个非常基本的实现之后,我能够获得批准将其作为开源发布。您可以在此处找到我的实施:Joinery -- Data frames for Java。欢迎提供贡献和功能。

答案 3 :(得分:6)

对R不太熟悉,但你应该看看Guava,特别是Table。他们提供您想要的确切功能,但您可以扩展它们,或者它们的规范可以帮助您编写自己的集合。

答案 4 :(得分:3)

Morpheus(http://www.zavtech.com/morpheus/docs/)提供与R的类似的DataFrame。它是一种高性能的列存储数据结构,可以在行或列维度中对数据进行排序,切片,分组和聚合。它还支持使用Fork& amp;和许多这些操作的并行处理。在内部加入框架。

您可以轻松阅读&将数据写入CSV文件,数据库以及专有的JSON格式。还可以使用从Quandl,Google财经和其他公司加载数据的适配器。

它内置支持各种风格的线性回归,主成分分析,线性代数和其他类型的分析支持。功能集仍在增长,但它已经是一个非常强大的框架。

答案 5 :(得分:0)

在R中,我们在Python中有数据框,在Python中我们有pandas: 来自deeplearning4j

Schema

如果您想要开始使用,还有一个无处不在的虹膜数据数据分析版本,here

还有其他自定义对象(来自Weka,来自Tensorflow,或多或少相同)。