当前位置: 首页 > news >正文

Python中表格插件Tabulate的用法

目录

一、引言

二、Tabulate插件安装与导入

三、Tabulate基本用法

1、创建表格:

2. 格式化表格:

3. 表格转置:

4、合并单元格:

5、指定每列的格式:

6、指定每行的格式:

7、使用自定义表格格式:

8、自定义列宽和行高:

9、添加边框和分隔符:

10、添加表头和行脚注:

11、使用自定义格式化函数:

总结


一、引言

在Python中,处理表格数据是常见的任务。表格可以是CSV文件、Excel文件、SQL数据库等。对于这种类型的数据,Python的pandas库提供了很好的支持,而Tabulate插件则进一步简化了表格数据的处理过程。Tabulate插件以其简洁的语法和强大的功能,成为了Python开发者处理表格数据的得力助手。本文将详细介绍Tabulate插件的用法,并通过实例说明其应用场景。

二、Tabulate插件安装与导入

首先,需要安装Tabulate插件。在命令行中输入以下命令进行安装:
pip install tabulate
安装完成后,可以在Python代码中导入Tabulate插件:
from tabulate import tabulate

三、Tabulate基本用法

1、创建表格:

创建表格的基础语法是使用tabulate()函数。这个函数接受两个主要的参数:数据和格式。例如:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
print(tabulate(data, headers='keys', tablefmt='psql'))

这段代码会创建一个包含ID和Name两列的表格,并打印出来。headers='keys'表示第一行是表头,tablefmt='psql'表示表格的格式。

2. 格式化表格:

Tabulate提供了多种方式来格式化表格。例如,可以通过missingval参数指定缺失值的表示方式:

data = [['ID', 'Name'], [1, 'Alice'], [2, None]]  
print(tabulate(data, headers='keys', missingval='Missing', tablefmt='psql'))

这段代码会在Name列中的空值处显示'Missing'。

3. 表格转置:

使用tabulate()函数的col_headers参数可以轻松地转置表格:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
headers = ['Name', 'ID']  
print(tabulate(data, headers=headers, tablefmt='psql'))

这段代码会创建一个转置后的表格,其中Name和ID互换了位置。

4、合并单元格:

Tabulate允许合并单元格,这在进行汇总和统计时非常有用。可以使用tabulate()函数的span_headers参数来合并表头,span_cells参数来合并单元格:

data = [['ID', 'Name', 'Age'], [1, 'Alice', 23], [2, 'Bob', None], [3, 'Charlie', 30]]  
print(tabulate(data, headers='keys', tablefmt='psql', span_headers=True, missingval='Missing'))

这段代码会合并Name和Age两列的表头,并在Age列中的空值处显示'Missing'。

5、指定每列的格式:

通过在tabulate()函数中使用headers参数,可以指定每个表头的格式。例如,可以使用lambda函数来格式化某一列:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
headers = {'ID': '{:03d}', 'Name': lambda x: x.title()}  
print(tabulate(data, headers=headers, tablefmt='psql'))

这段代码会将ID列格式化为三位数字,并将Name列的首字母大写。

6、指定每行的格式:

通过在tabulate()函数中使用missingval参数,可以指定缺失值的表示方式。例如,可以使用lambda函数来格式化缺失值:

data = [['ID', 'Name'], [1, 'Alice'], [2, None]]  
missingval = lambda x: 'Missing' if x is None else x  
print(tabulate(data, headers='keys', tablefmt='psql', missingval=missingval))

这段代码会在Name列中的空值处显示'Missing'。

7、使用自定义表格格式:

Tabulate插件支持自定义表格格式。可以创建一个继承自tabulate.TableFormat类的子类,并重写其_print_table()方法来实现自定义格式。例如,下面的代码实现了一个带有行号的表格:

from tabulate import TableFormat  class NumberedTable(TableFormat):  def _print_table(self, table, leadingspace=0):  for i, row in enumerate(table):  print('Row {}:'.format(i), row)  print(' ' * leadingspace + self._line_separator())

8、自定义列宽和行高:

通过在tabulate()函数中使用colwidths参数,可以指定每列的宽度;使用row_height参数可以指定每行的行高。例如:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
print(tabulate(data, headers='keys', tablefmt='psql', colwidths=[10, 20], row_height=15))

这段代码将ID列的宽度设置为10,Name列的宽度设置为20,并将行高设置为15。

9、添加边框和分隔符:

通过在tabulate()函数中使用border参数和delimiter参数,可以添加边框和分隔符。例如:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
print(tabulate(data, headers='keys', tablefmt='psql', border=True, delimiter='/'))

这段代码将表格的边框设置为True,并将分隔符设置为斜杠。

10、添加表头和行脚注:

通过在tabulate()函数中使用header_align参数和footer_align参数,可以添加表头和行脚注并对齐方式。例如:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
print(tabulate(data, headers='keys', tablefmt='psql', header_align=['left', 'center'], footer_align=['center', 'right']))

这段代码将ID列的表头对齐方式设置为左对齐,将Name列的表头对齐方式设置为居中对齐,将ID列的行脚注对齐方式设置为居中对齐,将Name列的行脚注对齐方式设置为右对齐。

11、使用自定义格式化函数:

通过在tabulate()函数中使用formatters参数,可以指定每列的格式化函数。例如:

data = [['ID', 'Name'], [1, 'Alice'], [2, 'Bob']]  
formatters = {'ID': lambda x: '{:03d}'.format(x), 'Name': lambda x: x.title()}  
print(tabulate(data, headers='keys', tablefmt='psql', formatters=formatters))

这段代码将ID列的格式化函数设置为将数字格式化为三位数字,将Name列的格式化函数设置为将字符串转换为首字母大写。

总结

通过使用Tabulate插件,我们能够轻松地生成美观且易读的表格,大大提升了数据可视化的效率和效果。Tabulate插件提供了丰富的配置选项,让我们能够根据自己的需求自由地定制表格样式、格式、对齐方式等。

通过使用嵌套列、格式化函数等功能,我们还可以创建复杂的表格结构并实现精细的数据展示要求。总之,Tabulate插件是一个功能强大、简单易用的数据可视化工具,它能够满足我们在Python中进行表格数据展示的各种需求。

相关文章:

Python中表格插件Tabulate的用法

目录 一、引言 二、Tabulate插件安装与导入 三、Tabulate基本用法 1、创建表格: 2. 格式化表格: 3. 表格转置: 4、合并单元格: 5、指定每列的格式: 6、指定每行的格式: 7、使用自定义表格格式&am…...

缺陷分级(过程质量bug分级)

缺陷按照其影响的严重程度,从高到低分成5级,分别为致命(Blocker)、严重(Critical)、一般(Major)、轻微(Minor)以及建议(Enhancement)。…...

pycharm/vscode 配置black和isort

Pycharm blackd Pycharm中有插件可以实现后台服务运行black:BlackConnect 安装 在python中安装blackd 配置 Pycharm isort pycharm中,isort没有插件,暂使用外部工具实现,外部工具也可添加快捷键实现快捷对文件、文件夹进行fo…...

python列出本地文件路径

按照之前的设想,如果要罗列出本地文件的列表,那不是需要不断的判断文件夹里面的文件夹吗?或者需要使用递归函数本身,才能达到目的吧?没想到使用pop这个函数就可以了。pop是取出元素,那列表里就少了一个&…...

在JavaScript中检查一个数字是否是另一个数字的倍数

使用%模数运算符 为了检查一个数字是否是另一个数字的倍数,我们可以使用JavaScript中的% modulo运算符。 modulo% 操作符返回第一个数字在第二个数字上的余数,例如:10 % 2 0 ,所以如果我们得到一个余数0 ,那么给定的数…...

计算机网络五层协议的体系结构

计算机网络中两个端系统之间的通信太复杂,因此把需要问题分而治之,通过把一次通信过程中涉及的所有问题分层归类来进行研究和处理 体系结构是抽象的,实现是真正在运行的软件和硬件 1.实体、协议、服务和服务访问点 协议必须把所有不利条件和…...

MySQL 运算符二

逻辑运算符 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。 运算符号作用NOT 或 !逻辑非AND逻辑与OR逻辑或XOR逻辑异或 1、与 mysql> select 2 and 0; --------- | 2 and 0 | --------- | 0 | -…...

【SA8295P 源码分析】121 - MAX9295A 加串器芯片手册分析 及初始化参数分析

【SA8295P 源码分析】121 - MAX9295A 加串器芯片手册分析 及初始化参数分析 一、MAX9295A 芯片特性1.1 GPIO 引脚说明1.2 功能模块框图1.3 时序分析1.3.1 GMSL2 Lock Time:25 ms1.3.2 视频初始化延时:1.1ms + 17000 x t(PCLK)1.3.3 High-Speed Data Transmission in Bursts1.…...

问题汇总20231103

文章目录 前言问题汇总1.所有操作系统在CPU层面上是不是都为时间片轮转的形式处理程序?只是任务调度的调度算法不同?那多线程的本质也是时间片吗?只不过很小?2.Mcu和mpu的本质区别3.下载HAL库步骤4.RAM,ROM,SRAM,SDRAM,DDR内存5.编…...

65.Undertow代替Tomcat

SpringBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升…...

前端mockjs使用方式[express-mockjs]

前提 现在基本上都是前后端分离项目的开发,而前端对于UI界面开发完毕之后往往都需要等待后端的接口提供,因此为了解决这个问题,这里提供一个由express和mockjs结合的本地服务应用项目,可以前端随意造数据配合UI页面进行开发。 个…...

矿区安全检查VR模拟仿真培训系统更全面、生动有效

矿山企业岗位基数大,生产过程中会持续有新入矿的施工人员及不定期接待的参观人员,下井安全须知培训需求量大。传统实景拍摄的视频剪辑表达方式有限,拍摄机位受限,难以生动表达安全须知的内容,且井下现场拍摄光线不理想…...

在SpringBoot中使用EhCache缓存

在使用EhCache缓存之前,我们需要了解的是EhCache缓存是啥? Ehcache的概述 Ehcache是一个开源的Java缓存框架,用于提供高效的内存缓存解决方案,他可以用于缓存各种类型的数据,包括对象,查询结果&#xff0…...

filter - 常用滤镜效果(毛玻璃、图片阴影、图片褪色)

文章目录 filter 属性滤镜算法函数blur:高斯模糊hue-rotate:色相环contrast:对比度grayscale:灰度drop-shadow:图片阴影 常见的滤镜效果图片内容轮廓阴影毛玻璃图片黑白调整图片色相和对比度使元素或文字变圆润 filter…...

【开源】基于Vue和SpringBoot的数据可视化的智慧河南大屏

项目编号: S 059 ,文末获取源码。 \color{red}{项目编号:S059,文末获取源码。} 项目编号:S059,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 …...

小型内衣洗衣机什么牌子好?性价比高的迷你洗衣机推荐

现在洗内衣内裤也是一件较麻烦的事情了,在清洗过程中还要用热水杀菌,还要确保洗衣液是否有冲洗干净,还要防止细菌的滋生等等,所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的,专门的内衣洗衣机可以最大程度减少…...

SIMULIA 2023 PowerFLOW 新功能介绍

PowerFLOW 2022仿真驱动设计 PowerFLOW2022重点关注MODSIM(MODeling and SIMulation)。新功能包括与3DEXPERIENCE平台上的CAD产品设计保持一致并从中无缝过渡,高度复杂的几何图形与间隙和孔的快速网格化以及过程自动化,初代 GPU求…...

智慧农业新篇章:拓世法宝AI智能直播一体机助力乡村振兴与农业可持续发展

随着乡村振兴战略的深入推进,农业发展日益成为国家关注的焦点。在这一大背景下,助农项目的兴起成为支持乡村振兴的一项重要举措。 乡村振兴战略的实施,得益于《关于推动文化产业赋能乡村振兴的意见》、《关于全面推进乡村振兴加快农业农村现…...

【数据结构】C语言实现栈

目录 前言 1. 栈 1.1 栈的概念 1.2 栈的结构 2. 栈的实现 2.1 栈的初始化 2.2 入栈 2.3 出栈 2.4 读取栈顶元素 2.5 判断栈空 2.6栈的销毁 3. 栈完整源代码 Stack.h Stack.c 🎈个人主页:库库的里昂 🎐C/C领域新星创作者 &…...

C语言加密字符(ZZULIOJ1064:加密字符)

题目描述 从键盘输入一批字符,以结束,按要求加密并输出。 输入:从键盘输入一批字符,占一行,以结束。 输出:输出占一行 加密规则: 1)所有字母均转换为小写。 2)若是字母a到y&#xff…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

全面解析各类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…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

第八部分:阶段项目 6:构建 React 前端应用

现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...