java数据分析及可视化框架Tablesaw⼊门前⾔
Tablesaw是⼀个⽤来进⾏数据分析和可视化显⽰的java库,,类似python中的Pandas库。
引⼊maven依赖
<dependency>
<groupId>tech.tablesaw</groupId>
<artifactId>tablesaw-jsplot</artifactId>
<version>0.38.1</version>
</dependency>
简单使⽤
⾃⼰创建⾏列数据
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 = ate("学⽣分数统计表").addColumns(
);
System.out.println(table.print());
}
}
制作数据表格,输出为
学⽣分数统计表
姓名  |  语⽂分数  |  数学分数  |  英语分数  |
---------------------------------
⼩明  |    76  |    90  |    76  |
⼩华  |    63  |    84  |    63  |
⼩红  |    87  |    99  |    87  |
从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 = ad().file("D:/Temp/student_csv.csv");
System.out.println(table.print());
}
}
从excel⽂件中读取数据
需要引⼊操作excel的maven依赖
<dependency>
java开发可视化界面
<groupId>tech.tablesaw</groupId>
<artifactId>tablesaw-excel</artifactId>
excel
⽂件内容如下
内部使⽤Apache 的POI 库来操作excel 。
数据过滤和汇总
输出为
数据可视化
<version>0.38.1</version>
</dependency>
import java.io.IOException;
import tech.tablesaw.api.Table;
public class TestExcelTable {
public static void main(String[] args) throws IOException {
Table table = ad().file("D:/Temp/students.xlsx");
System.out.println(table.print());
}
}
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 = ad().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("语⽂分数", an, 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.plotlyponents.Figure;
import tech.tablesaw.plotlyponents.Layout;
import tech.aces.BarTrace;
import tech.aces.BarTrace.Orientation;
public class TestTableVisualzation {
public static void main(String[] args) throws IOException {
dataVisualization();
根据数据创建条形图
内部使⽤ 来⽣成HTML ⽂件,关于创建更多类型的图表,请查看官⽅⽂档。  }
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 {
ad().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();
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。