遇见 Tablib

我们在 Python 实际开发过程中,经常涉及将数据导出为 Excel、Csv、Yaml、Json 等各种格式的文件的需求,一些粗鲁的实现方式是通过安装各种第三方模块以支持不同格式文件的导出操作。

接下来要我们要介绍的这个模块,再也不需要担心因导出不同格式数据时而调用各种第三方模块了,当然使用 Pandas 也是一个不错的选择,只是过于重量级了。

Python Tablib 是麻省理工学院授权的与格式无关的表格数据集库。支持导入、导出和操作表格数据集。优雅的将数据导出为各种不同的格式,包括Excel,Json,Html,Yaml,Csv,Tsv等格式。


Tablib 安装

我们在 Windows10 Python3 环境下,使用 pip 进行安装 ,安装命令如下:

pip install tablib

接下来,让我们一步步了解如何使用 Tablib ,简洁而又优雅的实现将数据导出为各种格式。


创建数据集

我们使用 tablib.Dataset 方法,采用如下方式创建数据集:

我们还可以另一种方式创建数据集,如下:

我们还可以通过导入现有文件数据的方式创建数据集,如下,我们为 dump.json 文件。

我们使用 tablib.Dataset.load 方法导入 dump.json 文件数据,实现如下:

创建一个 tablib.Dataset 通过 load 方法,导入现已存在的文件。强大之处是 tablib 能够自动检测传入的文件类型,并使用适当的格式化方法进行导入,实现从各种不同的文件类型中导入——强无敌

比如,我们再导入 dataset.xlsx 文件,代码实现如下:


添加行

我们可以使用 tablib.Dataset.append 方法,实现向数据集尾部添加行数据,需要注意的是每行的元素数量应与数据集的列数相同,代码实现如下:

我们也可以使用 tablib.Dataset.insert 方法,实现向数据集指定位置添加行数据,同样需要注意每行的元素数量应与数据集的列数相同,代码实现如下:


添加列

我们可以使用 tablib.Dataset.append_col 方法,实现向数据集尾部添加列数据,需要注意的是每列的元素数量应与数据集的行数相同,代码实现如下:

我们也可以使用 tablib.Dataset.insert_col 方法,实现向数据集指定位置添加列数据,需要注意的是每列的元素数量应于数据集的行数相同,代码实现如下:


选择行和列

我们可以像Python列表一样通过切片和索引获取行数据。像Python字典通过列名和索引获取列数据,代码实现如下:


删除行

我们可以使用以下方式,实现行删除:

  • tablib.Dataset.pop :删除最后一行
  • tablib.Dataset.lpop :删除第一行
  • del dataset[n: m] :删除指定范围的行

删除列

我们可以使用 del dataset['column_name'] ,实现删除指定列,代码实现如下:


数据格式转换

我们可以将数据集转换为如下任一格式,强无敌。

  • Excel ( 支持Books)
  • Json ( 支持Books)
  • Yaml (支持 Books)
  • Pandas DataFrames
  • Csv
  • Html
  • Jira
  • Tsv
  • Ods
  • Dbf
  • Dict

我们演示一下,其中几种数据格式,如下:

执行上述代码,输出结果为:


数据导出

终于介绍到,让我激动不已的数据导出了,简单而优雅,通用而高效。

导出 dataset_o.xlsx 文件如下:


使用DataBook 导出多页数据

导出 dataset_ot.xlsx 文件如下:


java json删除指定元素_简洁而优雅,Python Tablib实现将数据导出为Excel, Json等N种格式...相关推荐

  1. java数组删除数组元素_如何在Java中删除数组元素

    java数组删除数组元素 When we create an array in Java, we specify its data type and size. This is used by JVM ...

  2. js list删除指定元素_删除js数组中的指定元素,有这两步就够了

    js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单. 1.JS的数组对 ...

  3. java中线性表删除元素和删除指定元素_线性表的插入和删除(Java版)

    1.线性表的定义: (1).线性表是一种可以在任意位置插入和删除数据元素操作.由n(n≥0)个相同类型数据元素a0, a1,-, an-1组成的线性结构.除了第一个元素没有前驱元素和最后一个元素没有后 ...

  4. arraylist删除指定元素_揭开ArrayList的外衣看本质

    揭开ArrayList的外衣,看本质​mp.weixin.qq.com 源码还是比较多的,安安静静的读完确实不易,所以我们读源码要有着重点. ArrayList的继承和实现关系 ArrayList的成 ...

  5. js array 删除指定元素_数组--学习笔记(数据结构数组 /js数组)

    学习目标: 了解什么是数组: 数组如何访问内存地址(一维,二维): 什么是数组 是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储.利用元素的索引可以计算出该元素对应的存储地址. 最简 ...

  6. arraylist删除指定元素_【追凶】ArrayList使用增强for遍历删除元素异常ConcurrentModification...

    在工作中我们经常需要在遍历集合的时候删除元素,一开始我也以为只要在增强for循环中remove元素就可以了,现实给了我一个巴掌那就是ConcurrentModificationException. 首 ...

  7. java数组删除指定元素_Java数组删除指定元素

    package com.zas.util; import java.util.Arrays; public class ArrayUtil { /** * 删除数组的第 i 个元素(从0开始) * @ ...

  8. arraylist删除指定元素_面试官:谈谈常用的Arraylist和Linkedlist的区别

    Arraylist:底层是基于动态数组,根据下表随机访问数组元素的效率高,向数组尾部添加元素的效率高:但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组. 例如最坏的情况是删除第一个 ...

  9. java vector删除指定元素_C++ vector删除元素(数据)详解

    正像所说的那样,只能通过容器的成员函数来删除元素.可以通过使用 vector 的成员函数 clear() 来删除所有的元素.例如: std::vector data(100, 99);// Conta ...

最新文章

  1. 《Redis设计与实现》之第七章:压缩列表
  2. 脑电信号预处理--去趋势化(Detrended fluctuation analysis)
  3. 算法训练营08-分治和回溯
  4. [中山市选]杀人游戏 (Tarjan缩点)
  5. 页面仔 很丢人么?前端越来越不好干了
  6. raspberry pi_您应该选择哪种Raspberry Pi?
  7. 中止请求和超时 跨域的HTTP请求 认证方式 JSONP
  8. linux有k歌软件吗,在Linux下可用Wine安装和运行暴风影音16、全民K歌
  9. 小数据、高准确率的文本分类:利用迁移学习创造通用语言模型
  10. Windows系统C盘清理方案
  11. 发现一个很好用的 SVG 在线编辑器-Method Draw
  12. 服务器r软硬件配置,软硬件配置要求 - eSight V300R007C00 产品描述 11 - 华为
  13. ARTS-18(亲密关系)
  14. Linux IPTABLES 防火墙专题讲座 - 下篇-龙小威-专题视频课程
  15. 【Love2d从青铜到王者】第十三篇:Love2d之游戏:射击敌人(Game: Shoot the enemy)
  16. 社会人文跨计算机考研,各位跨专业考研党,不要违反这个规则,不然结果会让人遗憾...
  17. polybase配置 sql_在 Windows 上安装 PolyBase
  18. 赋能 打造应对不确定性的敏捷团队 pdf_《创业书影音》本期推荐《赋能》
  19. lua 阿拉伯数字转大写(一)
  20. 五个经典漏斗模型,看漏斗思维穿透流程化的本质

热门文章

  1. 解决docker数据文件过大导致根磁盘满的问题
  2. Social Dialogue征集IT意见领袖和优秀博客的RSS地址
  3. 第五节 系统调用的三个层次(下) ——20135203齐岳
  4. BeanUtils工具包下载及应用
  5. Cocoa编程开发者手册
  6. 触发full gc的条件
  7. 【动态规划】【数位DP】[PA 2015]Rownanie
  8. TFS 2005安装的注意事项
  9. 软件测试工作中如何有效沟通
  10. web端怎么做兼容性测试