利用tablesaw库简化表格数据分析
tableaw是处理表格数据的优秀工具。它提供了一组强大而灵活的功能,使操作、分析和可视化数据表变得容易。在这篇博文中,我们将介绍tableaw的主要特性、如何使用这些特性,以及如何使用tableaw处理表格数据的一些示例。
tablesaw简介
tableaw是一个开源库,用于处理用Java编写的表格数据。它提供了一套全面的api、库和工具,用于操作、分析和可视化表格数据。它旨在帮助简化与数据集相关的任务,例如清理、连接、排序和过滤。它支持流行的文件格式,如CSV、Excel和SQL。tableaw还附带了数据探索和可视化工具,允许您快速识别数据中的模式和趋势。
tablesaw 特性
tableaw包含一系列的特性,使得处理表格数据变得非常容易。这些功能包括:
- 数据读取与存储多样性
- 多种数据格式支持:Tablesaw 可以读取和写入多种常见的数据格式。例如,它能够轻松处理 CSV(逗号分隔值)文件,这是数据存储和交换中最常用的格式之一。除此之外,还能处理 Excel 文件、JSON 数据格式等,方便用户从不同的数据源获取数据并进行整合。
- 数据库集成:支持与数据库的交互,这使得它可以从关系型数据库(如 MySQL、PostgreSQL 等)中读取数据,或者将处理后的数据存储回数据库。这种与数据库的紧密连接性增强了它在企业级数据处理场景中的实用性。
- 数据操作功能强大
- 列操作简便:在处理表格数据时,对列的操作非常便捷。可以轻松地添加、删除、重命名列。例如,用户能够快速添加一个新列来存储经过计算得到的数据,如计算已有列的平均值、总和等。对于列中的数据类型转换也很方便,比如将字符串类型的日期列转换为日期类型,以便后续进行日期相关的分析。
- 数据清洗高效:提供了一系列数据清洗工具。能够有效地处理空值,用户可以选择删除包含空值的行,或者用特定的值(如均值、中位数等)填充空值。同时,对于重复数据,也有方便的方法来识别和删除,确保数据的质量和一致性。
- 数据筛选与排序灵活:支持灵活的数据筛选机制。用户可以根据各种条件筛选行,例如,通过指定列的值范围、等于某个特定值或者符合某个逻辑表达式来筛选出感兴趣的数据。在排序方面,可以按照一列或多列的值进行升序或降序排序,方便对数据进行有序的查看和进一步分析。
- 数据分析能力出色
- 基本统计分析功能完备:可以快速计算各种基本统计量,如均值、中位数、标准差、最大值、最小值等。这些统计功能对于初步了解数据的分布和特征非常有帮助,无论是在数据探索阶段还是在生成简单的报表时都能发挥作用。
- 高级数据分析工具支持:除了基本统计,还支持更复杂的数据分析技术。例如,能够生成交叉表(CrossTab),用于分析两个或多个变量之间的关系,这在数据挖掘和统计分析中是一种常用的方法。同时,对于数据分组和聚合操作也提供了强大的支持,用户可以按照指定的列对数据进行分组,并对每组数据进行聚合计算,如求和、计数、求平均值等。
- 可视化功能助力数据理解
- 简单直观的图表绘制:Tablesaw 具有一定的可视化功能,可以帮助用户将数据以直观的图表形式展示出来。例如,能够绘制柱状图、折线图、饼图等常见的图表类型。这些图表可以用于快速展示数据的分布、趋势或者比例关系,使数据的特征更加直观地被理解。
- 与数据操作紧密结合的可视化:可视化功能与数据处理操作紧密结合。在进行数据分析过程中,用户可以随时将分析结果以图表形式展示,并且可以根据数据的变化动态地更新图表。这有助于用户在数据探索和分析过程中更好地发现数据中的规律和异常。

- 性能优化与可扩展性
- 高效的数据处理算法:在处理大规模数据时,Tablesaw 采用了高效的数据处理算法,以确保在合理的时间和资源消耗下完成数据处理任务。例如,在数据排序和分组聚合等操作中,使用了优化的算法来减少计算时间和内存占用。
- 易于扩展和定制:该库的设计具有良好的扩展性,用户可以根据自己的需求进行定制化开发。例如,可以通过扩展已有的类和方法来添加新的数据处理功能,或者与其他 Java 库结合使用,以满足更复杂的业务需求。
如何使用tablesaw
使用tableaw相当简单: 你所需要做的就是安装库并开始编写代码。要开始,你需要安装最新版本的Tablesaw,你可以从GitHub下载。一旦安装了库,就可以开始编写代码了。
<dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-core</artifactId><version>0.23.3</version></dependency>
要处理表格数据,首先需要创建一个Table对象。该对象表示一个数据集,您可以使用它来操作数据。例如,您可以使用Table对象来筛选、排序、连接和分析数据。你也可以用它来可视化你的数据。
一旦创建了Table对象,就可以编写代码与数据集交互。例如,可以使用Table对象将两个表连接在一起。还可以使用它根据日期、数字和文本等条件筛选行或列。最后,可以使用Table对象来分析和可视化数据集。
数据分析示例
bush.csv 文件包括三列:date、approval、who,分别表示日期、投票数、机构;下面代码实现加载数据,排序数据:
Table table1 = Table.read().csv("bush.csv");table1.dateColumn(0);table1 = table1.sortDescendingOn("date", "who");System.out.println(table1.first(10));
输出结果:
bush.csv date | approval | who |
----------------------------------------2004-02-05 | 54.0 | time.cnn |2004-02-05 | 48.0 | newsweek |2004-02-04 | 53.0 | fox |2004-02-01 | 56.0 | upenn |2004-01-29 | 49.0 | newsweek |2004-01-29 | 49.0 | gallup |2004-01-26 | 54.0 | upenn |2004-01-22 | 50.0 | newsweek |2004-01-21 | 64.0 | upenn |2004-01-21 | 53.0 | fox |
- 聚合数据
...Table summary = table1.summarize("approval", max, min, range ).by("who");System.out.println(summary);
求最大值、最小值、范围(最大减去最小),返回结果:
bush.csv summary who | Max [approval] | Min [approval] | Range [approval] |
-----------------------------------------------------------------------fox | 88.0 | 46.0 | 42.0 |gallup | 90.0 | 49.0 | 41.0 |newsweek | 88.0 | 48.0 | 40.0 |time.cnn | 89.0 | 52.0 | 37.0 |upenn | 64.0 | 54.0 | 10.0 |zogby | 82.0 | 45.0 | 37.0 |
- 生成透视表
CategoricalColumn who = table1.categoricalColumn("who");CategoricalColumn yearQuarter = table1.dateColumn("date").yearQuarter();table1.addColumns(yearQuarter);table1 = table1.where(table1.dateColumn(0).isInQ3());Table xtab = CrossTab.counts(table1, who, yearQuarter);System.out.println(xtab);
首先我们定义分类列,然后增加新的列,为了输出格式,这里过滤仅查看三季度数据。最后是生成透视表并输出结果:
Crosstab Counts: who x date year & quarter [labels] | 2001-03 | 2002-03 | 2003-03 | total |
----------------------------------------------------------fox | 4.0 | 5.0 | 5.0 | 14.0 |gallup | 9.0 | 11.0 | 7.0 | 27.0 |newsweek | 3.0 | 5.0 | 6.0 | 14.0 |time.cnn | 3.0 | 2.0 | 2.0 | 7.0 |zogby | 3.0 | 3.0 | 4.0 | 10.0 |Total | 22.0 | 26.0 | 24.0 | 72.0 |
总结
tableaw是处理表格数据的优秀工具。它提供了一组强大而灵活的功能,使操作、分析和可视化数据表变得容易。本文介绍了Tablesaw的主要特性,以及如何使用Tablesaw处理表格数据的一些示例,后续我们会继续分享tablesaw的高级特性。
相关文章:
利用tablesaw库简化表格数据分析
tableaw是处理表格数据的优秀工具。它提供了一组强大而灵活的功能,使操作、分析和可视化数据表变得容易。在这篇博文中,我们将介绍tableaw的主要特性、如何使用这些特性,以及如何使用tableaw处理表格数据的一些示例。 tablesaw简介 tableaw…...
记录一下,解决js内存溢出npm ERR! code ELIFECYCLEnpm ERR! errno 134 以及 errno 9009
项目是个老项目,依赖包也比较大,咱就按正常流程走一遍来详细解决这个问题,先看一下node版本,我用的是nvm管理的,详细可以看我的其他文章 友情提醒:如果项目比较老,包又大,又有一些需…...
【JavaWeb后端学习笔记】MySQL的数据查询语言(Data Query Language,DQL)
MySQL DQL 1、DQL语法与数据准备1.1 DQL语法1.2 数据准备 2、基础查询2.1 查询指定字段2.2 查询返回所有字段2.3 给查询结果起别名2.4 去除重复记录 3、条件查询3.1 条件查询语法3.2 条件查询案例分析 4、分组查询4.1 分组查询语法4.2 分组查询案例分析 5、排序查询5.1 排序查询…...
360 最新Android面试题及参考答案
一个 activity 只能有一个进程么【对进程的理解】 在 Android 中,一个 Activity 并不只能有一个进程。进程是操作系统进行资源分配和调度的一个独立单位。 从原理上来说,Android 系统允许开发者通过在 AndroidManifest.xml 文件中的<activity>标签设置 android:process…...
《操作系统 - 清华大学》6 -3:局部页面置换算法:最近最久未使用算法 (LRU, Least Recently Used)
文章目录 1. 最近最久未使用算法的工作原理2. 最近最久未使用算法示例3.LRU算法实现3.1 LRU的页面链表实现3.2 LRU的活动页面栈实现3.3 链表实现 VS 堆栈实现 1. 最近最久未使用算法的工作原理 最近最久未使用页面置换算法,简称 LRU, 算法思路ÿ…...
ES6新增了哪些特性(待更新)
1.let,const 1.1.var,let,const的区别 1.1.1 var存在变量提升,let和const不存在。 1.1.2 let和const只能在块作用域里访问。 1.1.3 同一作用域下let和const不能声明同名变量,而var可以。 1.1.4 const定义常量&am…...
剖析一下自己的简历第二条
剖析一下自己的简历第二条 背景前置说明可能会被问到的问题 背景 剖析一下自己简历, 增加对一些专业知识的掌握. 我的简历第二条是这样写的: “2. 熟悉JVM、JMM,包括内存模型,垃圾回收机制,了解其基本调优技巧并具备线上调优经验。”. 前置…...
威联通-001 手机相册备份
文章目录 前言1.Qfile Pro2.Qsync Pro总结 前言 威联通有两种数据备份手段:1.Qfile Pro和2.Qsync Pro,实践使用中存在一些区别,针对不同备份环境选择是不同。 1.Qfile Pro 用来备份制定目录内容的。 2.Qsync Pro 主要用来查看和操作文…...
性能测试基础知识jmeter使用
博客主页:花果山~程序猿-CSDN博客 文章分栏:测试_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 性能指标 1. 并发数 (Con…...
Ceph文件存储
Ceph文件存储1.概念:数据以文件的形式存储在存储介质上,每个文件都有一个唯一的文件名并存储在一个目录结构中。提供方便的文件访问接口,支持多种文件操作,如创建、删除、读取、写入、复制等。用于存储和管理个人文件,如文档、图片…...
Hive分区表新增字段并指定位置
Hive分区表新增字段并指定位置 1、Hive分区表新增字段2、CASCADE关键字3、历史分区新增列为NULL问题 1、Hive分区表新增字段 Hive分区表新增字段并指定位置主要分为两步:新增字段和移动字段 1)新增字段 ALTER TABLE table_name ADD COLUMNS (col_name …...
关系型数据库(RDBMS)与非关系型数据库(NoSQL)应用场景
关系型数据库适用于事务性、强一致性和结构化数据场景;非关系型数据库则在高并发、大数据、非结构化数据场景中表现更优;数据量和并发量增加时,应通过分库分表、缓存、集群扩展等手段进行优化。 1. 在什么样的业务场景下,你会优先…...
浅谈CI持续集成
1.什么是持续集成 持续集成(Continuous Integration)(CI)是一种软件开发实践,团队成员频繁地将他们的工作成果集成到一起(通常每人每天至少提交一次,这样每天就会有多次集成),并且在每次提交后…...
华为新手机和支付宝碰一下 带来更便捷支付体验
支付正在变的更简单。 11月26日,华为新品发布会引起众多关注。发布会上,华为常务董事余承东专门提到,华为Mate 70和Mate X6折叠屏手机的“独门支付秘技”——“碰一下”,并且表示经过华为和支付宝的共同优化,使用“碰…...
shell编程基础笔记
目录 echo改字体颜色和字体背景颜色 bash基本功能: 运行方式:推荐使用第二种方法 变量类型 字符串处理: 条件判断:(使用echo $?来判断条件结果,0为true,1为false) 条件语句&a…...
VS Code配置Lua调试环境
我这里选用Emmylua进行Lua代码调试,调试环境配置如下: 一、安装Emmylua 在VS Code扩展里搜索emmylua,然后进行安装, 如下 二、配置launch.json 在Run and Debug里生成launch.json文件 点击以上菜单后,生成launch.json文件如下: 三、配置.e…...
FPGA(一)Quartus II 13.1及modelsim与modelsim-altera安装教程及可能遇到的相关问题
零.前言 在学习FPGA课程时,感觉学校机房电脑用起来不是很方便,想着在自己电脑上下载一个Quartus II 来进行 基于 vhdl 语言的FPGA开发。原以为是一件很简单的事情,没想到搜了全网文章发现几乎没有一个完整且详细的流程教学安装(也…...
【单片机】ESP32-S3+多TMC2209控制步进电机系列1 UART通信及无传感回零 硬件部分
目录 1. 硬件选型1.1 esp32硬件型号1.2 TMC2209 硬件型号 2 原理接线图2.1 esp32接线2.2 TMC2209接线2.2.1 单向通讯 不配置地址2.2.2 单向通讯 配置地址2.2.3 双向通讯 单UART 【本文采用】2.2.4 双向通讯 多UART 3. 成品效果 1. 硬件选型 1.1 esp32硬件型号 采用的是微雪ES…...
Django之ORM
1.ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对…...
html css 图片背景透明
html css图标背景透明 css属性: background-color:transparent; mix-blend-mode: multiply; 完整HTML代码: <html><head><title>Test</title></head><body><div id"test" style"background-col…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
