Spring Boot集成tablesaw插件快速入门Demo

1 什么是tablesaw?

Tablesaw是一款Java的数据可视化库,主要包括两部分:

  • 数据解析库,主要用于加载数据,对数据进行操作(转化,过滤,汇总等),类比Python中的Pandas库;

  • 数据可视化库,将目标数据转化为可视化的图表,类比Python中的Matplotlib库。

与Pandas不同的是,Tablesaw中的表格以列(Column)为基本单位,因此大部分操作都是基于列进行的。当然也包括部分对行操作的函数,但是功能比较有限

1.1 tablesaw目录说明

  1. aggregate:maven 的项目父级项目,主要定义项目打包的配置。

  2. beakerx:tablesaw 库的注册中心,主要注册表和列。

  3. core:tablesaw 库的核心代码,主要是数据的加工处理操作:数据的追加,排序,分组,查询等。

  4. data:项目测试数据目录。

  5. docs:项目 MarkDown 文档目录。

  6. docs-src:项目文档源码目录,主要作用是生成 MarkDown 文档。

  7. excel:解析 excel 文件数据的子项目。

  8. html:解析 html 文件数据的子项目。

  9. json:解析 json 文件数据的子项目。

  10. jsplot:数据可视化的子项目,主要作用加载数据生成可视化图表。

  11. saw:tablesaw 读写图表数据的子项目。

2 环境准备

2.1 数据库安装

数据库安装这里不做详细阐述,小伙伴们可自行安装,在docker环境下可执行:

docker run --name docker-mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7

2.2 数据库表初始化


create database springboot_demo;
create table user_info
(
user_id     varchar(64)          not null primary key,
username    varchar(100)         null ,
age         int(3)               null ,
gender      tinyint(1)           null ,
remark      varchar(255)         null ,
create_time datetime             null ,
create_id   varchar(64)          null ,
update_time datetime             null ,
update_id   varchar(64)          null ,
enabled     tinyint(1) default 1 null
);
INSERT INTO springboot_demo.user_info
(user_id, username, age, gender, remark, create_time, create_id, update_time, update_id, enabled)
VALUES('1', '1', 1, 1, '1', NULL, '1', NULL, NULL, 1);

3 代码demo

3.1 完成目标

利用tablesaw加工和处理二维数据,并且可视化

3.2 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springboot-demo</artifactId><groupId>com.wkf</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>tablesaw</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-core</artifactId><version>0.43.1</version></dependency><dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-jsplot</artifactId><version>0.43.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency></dependencies>
</project>

3.3 application.yaml

server:port: 8088
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://127.0.0.1:3305/springboot_demo?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: 123456

3.4 读取csv数据

    @Beforepublic void before() {log.info("init some data");tornadoes = Table.read().csv("D:/gitProject/springboot-demo/tablesaw/src/main/resources/data/tornadoes_1950-2014.csv");}

3.5 打印列名

    @Testpublic void columnNames() {System.out.println(tornadoes.columnNames());}

运行效果:

在这里插入图片描述

3.6 查看shape

    @Testpublic void shape() {System.out.println(tornadoes.shape());}

运行效果:

在这里插入图片描述

3.7 查看表结构

    @Testpublic void structure() {System.out.println(tornadoes.structure().printAll());}

运行效果:

在这里插入图片描述

3.8 查看数据

    @Testpublic void show() {System.out.println(tornadoes);}

运行效果:

在这里插入图片描述

3.9 表结构过滤

    @Testpublic void structurefilter() {System.out.println( tornadoes.structure().where(tornadoes.structure().stringColumn("Column Type").isEqualTo("DOUBLE")));}

运行效果:

在这里插入图片描述

3.10 预览数据

	@Testpublic void previewdata() {System.out.println(tornadoes.first(3));}

运行效果:

在这里插入图片描述

3.11 列操作

    @Testpublic void ColumnOperate() {StringColumn month = tornadoes.dateColumn("Date").month();tornadoes.addColumns(month);System.out.println(tornadoes.first(3));tornadoes.removeColumns("State No");System.out.println(tornadoes.first(3));}

运行效果:

在这里插入图片描述

3.12 排序

    @Testpublic void sort() {tornadoes.sortOn("-Fatalities");System.out.println(tornadoes.first(20));}

运行效果:

在这里插入图片描述

3.13 summary

    @Testpublic void summary() {System.out.println( tornadoes.column("Fatalities").summary().print());}

运行效果:

在这里插入图片描述

3.14 数据过滤

    @Testpublic void filter() {Table result = tornadoes.where(tornadoes.intColumn("Fatalities").isGreaterThan(0));result = tornadoes.where(result.dateColumn("Date").isInApril());result =tornadoes.where(result.intColumn("Width").isGreaterThan(300) // 300 yards.or(result.doubleColumn("Length").isGreaterThan(10))); // 10 milesresult = result.select("State", "Date");System.out.println(result);}

运行效果:

在这里插入图片描述

3.15 写入文件

    @Testpublic void write() {tornadoes.write().csv("rev_tornadoes_1950-2014-test.csv");}

3.16 从mysql读取数据

    @Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void dataFromMySql() {Table table = jdbcTemplate.query("SELECT  user_id,username,age from user_info", resultSet -> {return Table.read().db(resultSet);});System.out.println(table);}

运行效果:

在这里插入图片描述

3.17 数据可视化

package com.wkf.tablesaw;import tech.tablesaw.api.Table;
import tech.tablesaw.plotly.Plot;
import tech.tablesaw.plotly.api.BubblePlot;
import tech.tablesaw.plotly.components.Figure;import java.io.IOException;/*** @author wuKeFan* @date 2024-06-13 09:57:07*/
public class BubbleExample {public static void main(String[] args) throws IOException {Table wines = Table.read().csv("D:/gitProject/springboot-demo/tablesaw/src/main/resources/data/tornadoes_1950-2014.csv");Table champagne =wines.where(wines.stringColumn("wine type").isEqualTo("Champagne & Sparkling").and(wines.stringColumn("region").isEqualTo("California")));Figure figure =BubblePlot.create("Average retail price for champagnes by year and rating",champagne, // table namex"highest pro score", // x variable column name"year", // y variable column name"Mean Retail" // bubble size);Plot.show(figure);}}

结果如下图:

在这里插入图片描述

4 代码仓库

https://github.com/363153421/springboot-demo/tree/master/tablesaw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全(补充)

针对网络信息系统的容灾恢复问题&#xff0c;国家制定和颁布了《信息安全技术信息系统灾难恢复规范&#xff08;GB/T 20988-2007&#xff09;》&#xff0c;该规范定义了六个灾难恢复等级和技术要求&#xff1a;第一级基本支持&#xff08;要求至少每周做一次完全数据备份&…

上海晋名室外危废品暂存柜助力储能电站行业危废品安全储存

近日又有一台SAVEST室外危废暂存柜项目成功验收交付使用&#xff0c;此次项目主要用于储能电站行业废油、废锂电池等危废品的安全储存。 用户单位在日常工作运营中涉及到废油、废锂电池等危废品的室外安全储存问题。4月中旬用户技术总工在寻找解决方案的过程中搜索到上海晋名的…

华为wlan实验

分为三步&#xff1a;1、网络互通&#xff0c;2、AP上线&#xff0c;3、wlan业务 1、网络互通 crow-sw: vlan batch 20 100 dhcp enable int vlan 20 ip add 192.168.20.1 24 dhcp select interfaceinterface GigabitEthernet0/0/2port link-type accessport default vlan 100…

matlab 任意二维图像转点云

目录 一、概述二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 给定任意一张图片,通过代码操作将图片转成点云。图像中包含大量可用信息,其中必不可少的信息为像素坐标和像素值,将像…

FastDFS简介与调优

背景&#xff1a;FastDFS在公司使用多年&#xff0c;一直作为主要文件存储服务使用。经过多场景、多项目实战检验。稳定性、性能均满足实战要求。相关使用介绍及调优给大家分享一下。 1.简介 FastDFS是淘宝架构师_余庆用C语言编写的一款开源的分布式文件系统&#xff0c;源码目…

汇编:EFLAGS寄存器

EFLAGS寄存器是x86架构处理器中的一个状态寄存器&#xff0c;用于存储当前处理器状态和控制特定操作&#xff1b;寄存器中的各个标志位可以影响指令执行&#xff0c;并且指令执行过程中也可以修改这些标志位&#xff0c;每个位都有特定的含义。 EFLAGS寄存器图示&#xff1a; …

代码随想录——电话号码的字母组合(Leetcode17)

题目链接 回溯 class Solution {List<String> res new ArrayList<String>();StringBuilder str new StringBuilder();HashMap<String, String> Sites new HashMap<String, String>();public List<String> letterCombinations(String digit…

警报!警报!APP推荐风暴再次来袭!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 1.中医古今经典方剂—中药方剂 中药方剂是一款集成了中医古今经典方剂的知识检索库产品,收录了上万种中医中药偏方,及当代名老中医的自创验方,是…

Python酷库之旅-比翼双飞情侣库(05)

目录 一、xlrd库的由来 二、xlrd库优缺点 1、优点 1-1、支持多种Excel文件格式 1-2、高效性 1-3、开源性 1-4、简单易用 1-5、良好的兼容性 2、缺点 2-1、对.xlsx格式支持有限 2-2、功能相对单一 2-3、更新和维护频率低 2-4、依赖外部资源 三、xlrd库的版本说明 …

数据结构(DS)学习笔记(4):线性表

2.1线性表的类型定义 线性表是最常用且最简单的一种数据结构&#xff0c;是一种典型的线性结构&#xff0c;一个线性表是n个数据元素的有限序列。 线性表&#xff1a;&#xff0c; ——是数据元素&#xff0c;是线性起点&#xff08;起始结点&#xff09;&#xff0c;是线性…

Blender骨骼创建

骨骼系统 建立 使用Shift A添加骨骼或在添加|骨架中添加一段骨骼 骨骼的三种模式 -物体模式&#xff1a;做动画&#xff0c;摆人物pose时在该模式 -编辑模式&#xff1a;进行骨骼搭建&#xff08;选择一段骨骼&#xff0c;然后按E挤出一段骨骼并进行调整&#xff09; -姿…

谷粒商城实战(036 k8s集群学习2-集群的安装)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第343p-第p345的内容 k8s 集群安装 kubectl --》命令行操作 要进入服务器 而且对一些不懂代码的产品经理和运维人员不太友好 所以我们使用可视化…

【python】tkinter编程三大布局管理器pack、grid、place应用实战解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

NPM常见问题

文章目录 NPM常见问题1. 使用淘宝源安装包出错2. listen EADDRINUSE 服务端口被占用报错3. npm start 启动后过一会崩溃结束&#xff1a;内存溢出4. npm install的时候使用特定的源安装5. npm安装指定版本、最新版本6. npm ERR! cb() never called! 解决7. Unable to authentic…

内网穿透方法有哪些?路由器端口映射外网和软件方案步骤

公网IP和私有IP不能互相通讯。我们通常在局域网内部署服务器和应用&#xff0c;当需要将本地服务提供到互联网外网连接访问时&#xff0c;由于本地服务器本身并无公网IP&#xff0c;就无法实现。这时候就需要内网穿透技术&#xff0c;即内网映射&#xff0c;内网IP端口映射到外…

大模型+RAG,全面介绍!

1 、介绍 大型语言模型&#xff08;LLMs&#xff09;在处理特定领域或高度专业化的查询时存在局限性&#xff0c;如生成不正确信息或“幻觉”。缓解这些限制的一种有前途的方法是检索增强生成&#xff08;RAG&#xff09;&#xff0c;RAG就像是一个外挂&#xff0c;将外部数据…

Covalent 承诺向 Consensys Builders Scale 提供 250 万美元资助

作为 Web3.0 领域主要的模块化数据基础设施层 Covalent Network&#xff08;CQT&#xff09;承诺向「Consensys Builders Scale 计划」提供 250 万美元的资助&#xff0c; 用于助力 Consensys 生态的发展。这一重大举措体现了 Covalent Network&#xff08;CQT&#xff09;的使…

云服务器部署Neo4j

文章目录 导读安装Neo4j先去官网看看下载安装包如果真的下载了rpm安装包 插件 导读 大模型&#xff0c;他终于来了。 不过呢&#xff0c;大模型相关&#xff0c;现在也就跟着热点去尝试一下multi-agent的RAG方向&#xff0c;看看能做到什么地步。总之我们先从安装neo4j开始。…

定时清理rocketmq日志--crontab

1、背景 之前在部署rocketmq的时候未修改日志路径&#xff0c;导致在用户目录下有日志数据写入。因不方便修改或空间足够可正常写入&#xff0c;但日志量过大需清理&#xff0c;现添加定时任务执行。 2、规划&#xff1a; 目前测试阶段&#xff0c;所以时间是可变的&#xf…

DTU为何应用如此广泛?

1.DTU是什么 DTU(数据传输单元)是一种无线终端设备&#xff0c;它的核心功能是将串口数据转换为IP数据或将IP数据转换为串口数据&#xff0c;并通过无线通信网络进行传送。DTU通常内置GPRS模块&#xff0c;能够实现远程数据的实时传输&#xff0c;广泛应用于工业自动化、远程监…