使用Java tablesaw table革新您的数据分析

Tablesaw java库的table功能可通过简单的API进行过滤、连接、绘图和操作表格数据。支持CSV、数据库和Excel。
On this page

使用Java tablesaw table革新您的数据分析

请将以下英文内容翻译成中文,保持原意并保持格式,包括">"。只输出翻译后的内容。

安装与设置

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许可下提供。

该库提供了两个主要结构 - TableColumn,用于处理表格数据。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文档以开始使用,并查看代码示例了解更多用法详情。