Tablesaw项目核心数据结构Table使用指南
tablesaw Java dataframe and visualization library 项目地址: https://gitcode.com/gh_mirrors/tab/tablesaw
概述
Tablesaw作为一款高效的Java数据分析库,其核心数据结构Table承载了绝大部分数据处理功能。本文将全面介绍Table的创建、操作、查询和输出等核心功能,帮助开发者快速掌握这一强大工具。
Table基础特性
Tablesaw采用"全表思维"设计理念,绝大多数操作都以Table为中心展开:
- 表结构自描述:通过返回新表来描述原表结构
- 链式操作:多数方法返回Table对象,支持方法链调用
- 内存高效:基于列式存储,避免不必要的数据复制
表创建与加载
编程式创建
// 创建空表
Table users = Table.create("用户表");
// 创建时指定列
DoubleColumn height = DoubleColumn.create("身高");
StringColumn name = StringColumn.create("姓名");
Table users = Table.create("用户表", name, height);
数据导入
支持多种数据源导入方式:
// CSV文件导入
Table sales = Table.read().csv("sales_data.csv");
// 数据库查询结果导入
Table results = Table.read().db(
resultSet, "查询结果");
导入时可指定参数控制解析行为:
- 列分隔符
- 是否包含表头
- 日期时间格式
- 各列数据类型
数据查看与元数据
数据预览
// 查看前10行和后10行
table.print();
// 精确控制显示行数
table.first(5); // 前5行
table.last(3); // 后3行
元数据获取
// 表基本信息
String name = table.name(); // 表名
int rows = table.rowCount(); // 行数
int cols = table.columnCount(); // 列数
// 列结构信息
Table structure = table.structure();
/*
输出示例:
Index ColumnName Type
0 Date LOCAL_DATE
1 Amount DOUBLE
*/
列操作
列增删
// 添加列
DoubleColumn salary = DoubleColumn.create("薪资");
table.addColumns(salary);
// 指定位置插入列
table.addColumn(2, salary);
// 删除列
table.removeColumns("临时列");
table.retainColumns("姓名", "薪资"); // 保留指定列
列选择
// 获取所有列
List<Column<?>> allColumns = table.columns();
// 获取指定列
DoubleColumn age = table.doubleColumn("年龄");
StringColumn name = table.stringColumn("姓名");
// 创建列子集
Table subset = table.select("姓名", "年龄");
数据操作
行操作
// 添加行
Row newRow = table.appendRow();
newRow.setString("姓名", "张三");
newRow.setDouble("薪资", 15000.0);
// 删除行
Table filtered = table.dropRows(0, 5); // 删除前5行
// 条件删除
Table adults = table.dropWhere(
table.intColumn("年龄").isLessThan(18));
数据过滤
// 简单过滤
Table result = table.where(
table.stringColumn("部门").equalsIgnoreCase("财务部"));
// 组合条件
Table highSalary = table.where(
table.doubleColumn("薪资").isGreaterThan(10000)
.and(table.intColumn("工龄").isGreaterThan(5)));
数据分析
数据汇总
// 单维度汇总
Table summary = table.summarize(
"薪资", mean, max, min).apply();
// 分组汇总
Table deptSalary = table.summarize(
"薪资", mean).by("部门");
交叉分析
// 构建交叉表
Table crossTab = table.xTabCount("部门", "职级");
// 带比例计算
Table crossPercents = table.xTabPercents("部门", "职级");
数据排序
// 单列排序
table.sortAscendingOn("入职日期");
// 多列排序
table.sortOn(
"-部门", // 部门降序
"+薪资"); // 薪资升序
数据输出
// CSV格式
table.write().csv("output.csv");
// JSON格式
table.write().json("data.json");
// 数据库写入
table.write().db(connection, "tableName");
性能优化建议
- 批量操作:尽量使用列操作而非逐行处理
- 类型匹配:确保操作与列数据类型匹配
- 链式调用:利用方法链减少中间表创建
- 延迟计算:部分操作会延迟执行,注意适时触发
通过掌握这些核心功能,开发者可以充分利用Tablesaw进行高效的数据处理分析工作。
tablesaw Java dataframe and visualization library 项目地址: https://gitcode.com/gh_mirrors/tab/tablesaw
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考