java数据分析及可视化框架Tablesaw入门 您所在的位置:网站首页 csv数据包怎么做 java数据分析及可视化框架Tablesaw入门

java数据分析及可视化框架Tablesaw入门

2023-07-01 06:05| 来源: 网络整理| 查看: 265

前言

Tablesaw是一个用来进行数据分析和可视化显示的java库,这里是官方文档,类似python中的Pandas库。

引入maven依赖 tech.tablesaw tablesaw-jsplot 0.38.1 简单使用 自己创建行列数据 import tech.tablesaw.api.IntColumn; import tech.tablesaw.api.StringColumn; import tech.tablesaw.api.Table; public class TestTable { public static void main(String[] args) { String[] students = {"小明", "小华", "小红"}; //语文分数 int[] chineseScores = {76, 63, 87}; //数学分数 int[] mathScores = {90, 84, 99}; //英语分数 int[] englishScores = {76, 63, 87}; Table table = Table.create("学生分数统计表").addColumns( StringColumn.create("姓名", students), IntColumn.create("语文分数", chineseScores), IntColumn.create("数学分数", mathScores), IntColumn.create("英语分数", englishScores) ); System.out.println(table.print()); } }

制作数据表格,输出为

学生分数统计表 姓名 | 语文分数 | 数学分数 | 英语分数 | --------------------------------- 小明 | 76 | 90 | 76 | 小华 | 63 | 84 | 63 | 小红 | 87 | 99 | 87 | 从CSV文件中读取数据

关于csv文件格式的介绍,student_csv.csv文件内容如下

学生,语文分数,数学分数,英语分数 小明,86,90,76 小华,93,84,63 小红,72,99,87 import java.io.IOException; import tech.tablesaw.api.Table; public class TestCsvTable { public static void main(String[] args) throws IOException { Table table = Table.read().file("D:/Temp/student_csv.csv"); System.out.println(table.print()); } } 从excel文件中读取数据

需要引入操作excel的maven依赖

tech.tablesaw tablesaw-excel 0.38.1

excel文件内容如下

import java.io.IOException; import tech.tablesaw.api.Table; public class TestExcelTable { public static void main(String[] args) throws IOException { Table table = Table.read().file("D:/Temp/students.xlsx"); System.out.println(table.print()); } }

内部使用Apache的POI库来操作excel。

数据过滤和汇总 import java.io.IOException; import tech.tablesaw.aggregate.AggregateFunctions; import tech.tablesaw.api.QuerySupport; import tech.tablesaw.api.Table; public class TestTableStatistics { public static void main(String[] args) throws IOException { Table table = Table.read().csv("D:/Temp/student_csv.csv"); //过滤语文分数大于等于80的学生 Table filterResult = table .where(QuerySupport.all(t -> t.intColumn("语文分数").isGreaterThanOrEqualTo(80))); System.out.println(filterResult); //统计语文分数的平均值,最大值和最小值 Table summarizeResult = table .summarize("语文分数", AggregateFunctions.mean, AggregateFunctions.max, AggregateFunctions.min) .apply(); System.out.println(summarizeResult); } }

输出为

student_csv.csv 学生 | 语文分数 | 数学分数 | 英语分数 | --------------------------------- 小明 | 86 | 90 | 76 | 小华 | 93 | 84 | 63 | student_csv.csv summary Mean [语文分数] | Max [语文分数] | Min [语文分数] | --------------------------------------------------- 83.66666666666667 | 93 | 72 | 数据可视化 import java.io.IOException; import tech.tablesaw.api.Table; import tech.tablesaw.plotly.Plot; import tech.tablesaw.plotly.components.Figure; import tech.tablesaw.plotly.components.Layout; import tech.tablesaw.plotly.traces.BarTrace; import tech.tablesaw.plotly.traces.BarTrace.Orientation; public class TestTableVisualzation { public static void main(String[] args) throws IOException { dataVisualization(); } private static void dataVisualization() throws IOException { Table table = createTable(); Layout layout = Layout.builder() .title("学生分数统计表") .height(700) .width(900) .build(); Figure figure = new Figure(layout, createBarTrace(table, "语文分数"), createBarTrace(table, "数学分数"), createBarTrace(table, "英语分数")); Plot.show(figure); } private static Table createTable() throws IOException { return Table.read().csv("D:/Temp/student_csv.csv"); } private static BarTrace createBarTrace(Table table, String numberColumnName) { return BarTrace.builder(table.categoricalColumn("学生"), table.numberColumn(numberColumnName)) .orientation(Orientation.VERTICAL) .name(numberColumnName) .build(); } }

根据数据创建条形图

内部使用 pebble模板引擎 来生成HTML文件,关于创建更多类型的图表,请查看官方文档。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有