我真的很喜欢R中的data.frames,因为你可以在一个数据结构中存储不同类型的数据,并且你有很多不同的方法来修改数据(添加列,组合data.frames,...),它从数据中提取子集非常容易......
是否有可用的Java库具有相同的功能?我最感兴趣的是以类似矩阵的方式存储不同类型的数据,并能够提取数据的子集。
在Java中使用二维数组可以提供类似的结构,但是添加一个列并随后提取前k个记录要困难得多。
答案 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)
答案 4 :(得分:3)
Morpheus(http://www.zavtech.com/morpheus/docs/)提供与R的类似的DataFrame。它是一种高性能的列存储数据结构,可以在行或列维度中对数据进行排序,切片,分组和聚合。它还支持使用Fork& amp;和许多这些操作的并行处理。在内部加入框架。
您可以轻松阅读&将数据写入CSV文件,数据库以及专有的JSON格式。还可以使用从Quandl,Google财经和其他公司加载数据的适配器。
它内置支持各种风格的线性回归,主成分分析,线性代数和其他类型的分析支持。功能集仍在增长,但它已经是一个非常强大的框架。
答案 5 :(得分:0)