请将以下英文内容翻译成中文,保持原意并保持格式,包括">"。只输出翻译后的内容。
安装与设置
Tablesaw是一个用于分析表格数据的开源Java库,构建在Java 8流的基础之上。它可以从GitHub下载,也可以作为Maven或Gradle项目的依赖项添加。编写本文时的最新版本是0.38.7
。
使用Maven添加Tablesaw:
1<dependency>
2 <groupId>tech.tablesaw</groupId>
3 <artifactId>tablesaw-core</artifactId>
4 <version>0.38.7</version>
5</dependency>
使用Gradle:
1implementation 'tech.tablesaw:tablesaw-core:0.38.7'
现在我们准备好在我们的Java代码中开始使用Tablesaw了。
介绍
Tablesaw是由Randall Griffith于2016年创建的,旨在为Java中的表格数据提供一个简单的API,类似于Python中的Pandas。它由Anthropic进行维护,并在Apache 2.0许可下提供。
该库提供了两个主要结构 - Table
和Column
,用于处理表格数据。Table
表示具有多个命名列的完整数据集,而Column
提供了操作单个列的API。Tablesaw在底层使用Java 8流进行优化的数据处理。
Tablesaw的一些主要功能和能力包括:
- 从CSV、数据库、Excel、HTML等导入数据
- 过滤、抽样、聚合、分组和连接数据
- 添加/删除/重新排序列
- 处理缺失值
- 执行数学、文本、日期/时间和统计函数
- 创建图表和可视化
- 导出数据到各种格式
接下来,我们将通过一些实例来说明如何使用Tablesaw。
创建表格
可以通过添加列来以编程方式创建表格:
1Table table = Table.create("MyTable")
2 .addColumns(
3 Column.create("id", IntColumn.create()),
4 Column.create("name", StringColumn.create()),
5 Column.create("age", IntColumn.create())
6 );
也可以从CSV文件等外部源导入表格:
1Table table = Table.read().csv("data.csv");
可以向现有表格添加或删除列:
1table.addColumns(Column.create("salary", FloatColumn.create()));
2
3table.removeColumns("id");
列的顺序也可以更改:
1table.columnOrder("age", "name", "salary");
查询和过滤
Tablesaw 提供了类似于 SQL 的语法来查询表格:
1Table results = table.selectWhere(table.intColumn("age").isGreaterThan(30));
这个过滤器是用来筛选年龄列大于30的行。
我们也可以对数据进行分组和聚合:
1Table summary = table.summarize("age", table.intColumn("age").average()).by("department");
这个计算了按"department"列分组后的平均年龄。
连接和合并
表格可以在垂直方向(添加列)和水平方向(添加行)上进行合并:
1Table joined = table1.concat(table2); // adds rows
2
3Table wide = table1.join(table2); // adds columns
对于基于键的连接,Tablesaw 支持内连接、左外连接、右外连接和全外连接:
1Table innerJoin = table1.innerJoin(table2, "id");
2
3Table leftJoin = table1.leftOuterJoin(table2, "id");
转换数据
Tablesaw 提供了许多选项来转换列数据,包括:
sortAscending()
和sortDescending()
map()
应用函数set()
改变值removeMissing()
过滤行bin()
分桶/离散化logN()
和其他数学函数lowerCase()
、upperCase()
、trim()
处理文本
绘图和可视化
Tablesaw通过为Plot.ly JavaScript绘图库提供包装器来支持数据可视化。以下是新库的一些示例。
plot()
方法与JSPlot库集成,可以生成直方图、散点图和条形图等可视化图表。
1table.plot().histogram("age", 50);
图表可以自定义,保存到文件,并在Swing/JavaFX窗口中显示。
输入/输出
Tablesaw支持读写各种文件格式:
- CSV, TSV
- Excel (XLSX)
- HTML表格
- JSON
- 通过JDBC连接的数据库
并可以导出为PDF、Markdown和Excel等格式。
1Table table = Table.read().csv("data.csv");
2
3table.write().csv("output.csv");
高级功能
Tablesaw的一些更高级的功能包括:
- 通过过滤、插补处理缺失数据
- 用于大型数据集的多线程并行处理
- 文本分析功能,如词干提取和n-grams
- 带有日期/时间列的时间序列分析
- 创建子表和抽样
结论
Tablesaw提供了一个简单而强大的API,用于分析和操作Java中的表格数据。通过其类似于SQL的语法,支持连接和聚合、文件导入/导出、绘图集成等功能,Tablesaw是处理表格数据的一个很好的选择。
它与其他Java库(如Apache Commons Math用于统计和数学,以及Spark DataFrames用于分布式数据集)相比具有优势。对于适合内存的中小型数据集,Tablesaw提供了一个简洁易用的API。
请查看Tablesaw文档以开始使用,并查看代码示例了解更多用法详情。