0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Tablib:一个Python的第三方数据导出模块

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-11-02 15:57 次阅读

Tablib是一个Python的第三方数据导出模块,它支持以下文件格式的导出:

  • Excel
  • JSON
  • YAML
  • Pandas DataFrames
  • HTML
  • Jira
  • TSV
  • ODS
  • CSV
  • DBF

其实这个工具能做到的东西,Pandas都能做到,但是有时候Pandas实在是过重了,如果我们只想实现轻量数据的导出,而非上千万级别的数据导出,该工具更能体现它的优势。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南

在终端输入以下命令安装我们所需要的依赖模块:

pip install tablib

看到 Successfully installed xxx 则说明安装成功。

2.基本使用

这一块,官方文档已经有详细介绍,这里转载自xin053的翻译与介绍,有部分修改:
https://xin053.github.io/2016/07/10/tablib%E5%BA%93%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3/

创建Dataset对象

图片

这样相当于构造了一张表:

first_namelast_name
JohnAdams
GeorgeWashington

其中最重要的就是Dataset对象,当然该对象的创建也可以不输入参数,直接

data = tablib.Dataset()

创建出一个Dataset对象,然后通过

data.headers = ['first_name', 'last_name']

设置表头,当然也可以使用 data.headers = ('first_name', 'last_name'), 因为不管是用列表还是元组,tablib都会自动帮我们处理好,我们可以通过

data.append(['Henry', 'Ford'])
# 或data.append(('Henry', 'Ford'))

来向表中添加一条记录。

我们可以通过data.dict来查看目前表中的所有数据:

图片

也可以通过print(data)显示更人性化的输出:

图片

Dataset属性

data.height输出当前记录(行)总数

data.width输出当前属性(列)总数

图片

常用方法

详情可见官方文档:
https://tablib.readthedocs.io/en/stable/api/#tablib.Dataset.remove_duplicates

lpop(), lpush(row, tags=[]), lpush_col(col, header=None)是对列的相关操作

pop(), rpop(), rpush(row, tags=[]), rpush_col(col, header=None)是对行的相关操作

remove_duplicates()去除重复的记录

sort(col, reverse=False)根据列进行排序

subset(rows=None, cols=None)返回子Dataset

wipe()清空Dataset,包括表头和内容

新增列

data.append_col((90, 67, 83), header='age')

这样表就变成了:

first_namelast_nameage
JohnAdams90
GeorgeWashington67
HenryFord83

图片

对记录操作

> >> print(data[:2])
[('John', 'Adams', 90), ('George', 'Washington', 67)]
> >> print(data[2:])
[('Henry', 'Ford', 83)]

对属性操作

图片

删除记录

图片

可见记录也是从0开始索引

删除记录操作也支持切片, 即 del data[1:999] 也是可行的

删除属性

del data['Col Name']

导入数据

imported_data = tablib.Dataset().load(open('data.csv').read())

导出数据

csv:

图片

这样便可成功将数据导出为csv文件。

json:

图片

yaml:

图片

excel:

>> > with open('people.xls', 'wb') as f:
...     f.write(data.xls)

注意要以二进制形式打开文件

dbf:

>> > with open('people.dbf', 'wb') as f:
...     f.write(data.dbf)

高级使用

动态列

可以将一个函数指定给Dataset对象

图片

函数的参数row传入的是每一行记录,所以可以根据传入的记录进行更一步的计算:

图片

tag

可以给记录添加tag,之后通过tag来过滤记录:

图片

3.举个小例子

现在有一个场景,我们需要将一份股票数据csv文件转化为json数据:

图片

你只需要这样操作:

图片

即可将其转化为json格式,显然,它的特点在于轻量、简单。如果用Pandas来做这样的转化,则有些大材小用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2621

    浏览量

    47102
  • 数据
    +关注

    关注

    8

    文章

    6725

    浏览量

    88433
  • python
    +关注

    关注

    53

    文章

    4754

    浏览量

    84162
收藏 人收藏

    评论

    相关推荐

    Labview如何内嵌操作第三方EXE程序!

    自己在网上搜了下相关资料,能把第三方EXE内嵌进入容器里,但是有问题,这个第三方软件必须手动拖到容器正中间,手动最大化。请问有什么方法可以自动实现吗? 下图是我内嵌的POLL 软件。如图!
    发表于 04-18 14:26

    如何把第三方库加到PROTEUS中?

    新手求教,弱弱的问下,下了第三方库,说是要先安装,再添加路径,可是我下来的第三方库没有看到安装文件啊。还望指教如何添加!
    发表于 06-15 22:32

    第三方dll调用问题!!!

    第三方dll,没有.h,labview怎么实现调用,dll可以用VS打开,类库说明也有
    发表于 05-11 09:14

    LabVIEW与第三方软件交互问题

    现在做一个软件,就是通过LabVIEW去与第三方软件进行交互操作!已经通过百度找到了利用user32.dll调用FindWindowA与PostMessage去实现对计算器,找了多方资料也没有找到解决办法。想做一个软件就是对图片
    发表于 12-26 17:13

    下载python第三方

    python第三方库的下载
    发表于 07-02 13:12

    国内知名第三方检测认证机构排名

    的检测机构介入,成熟的第三方检测机构介入商品检测在十九世纪中叶已经很普遍了,并成为种自觉的商业行为。目前中国已经成为了全球贸易大国,经济实力跃居世界第二,强劲的对外贸易增长态势促进了检测行业的不断
    发表于 07-19 16:57

    Detectron训练第三方数据集测试

    从零开始使用Detectron训练第三方数据集是什么体验(六)
    发表于 04-14 11:44

    Python入门之36常用第三方模块获取系统信息psutil

    Python入门】36常用第三方模块之 获取系统信息psutil
    发表于 07-16 06:31

    关于LabVIEW调用第三方exe,如何去控制第三方exe按钮的问题

    我想调用第三方的exe,但并没有给出任何接口,就单单exe程序,通过查资料得出可以用window自带的user32.dll可以控制第三方的软件,通过FindWindowA函数找到该
    发表于 08-12 16:37

    头文件中包含第三方文件

    macrocmake如果源文件(例如 CPP)中包含第三方头文件,但是头文件(例如 hpp)中不包含该第三方文件头,采用 PRIVATE。如果源文件和头文件中都包含该第三方文件头,采用 PUBLIC
    发表于 08-18 08:10

    银行和第三方支付:恋爱进行时

    银行和第三方支付:恋爱进行时   北京2010年1月8日电  -- 从第三方支付诞生之时起,银行与第三方支付之间的竞合关系
    发表于 01-09 08:08 640次阅读

    第三方脚本成为网络攻击“重灾区”,多管齐下防范第三方脚本安全隐患

      第三方脚本攻击利用的是第一方网站对第三方脚本的控制力不足和难以实现的全面监测,造成较为严重的攻击后果。除此之外,第三方脚本还会带来些其
    的头像 发表于 09-04 14:51 3487次阅读

    GeoPandas:针对地理数据做了特别支持的第三方模块

    GeoPandas是基于pandas,针对地理数据做了特别支持的第三方模块。 它继承pandas.Series和pandas.Dataf
    的头像 发表于 10-21 14:29 488次阅读
    GeoPandas:针对地理<b class='flag-5'>数据</b>做了特别支持的<b class='flag-5'>第三方</b><b class='flag-5'>模块</b>

    yfinance:获取数据Python第三方模块

    yfinance 是使用 Yahoo! 获取数据Python 第三方模块。它支持获取最细
    的头像 发表于 10-21 14:32 2076次阅读

    python第三方库有哪些

    Python 作为门功能强大的编程语言,拥有丰富的第三方库,几乎覆盖了各个领域的应用。下面是些常见且广泛应用的 Python
    的头像 发表于 11-29 14:31 1972次阅读