![Python数据分析从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/705/33643705/b_33643705.jpg)
4.1 使用tablib模块
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_01.jpg?sign=1738835727-DTBjTHgE2bVo1b7rNJUZrUdvKhHBAtRf-0-15b8480e6323d0c922be6fa8676ee060)
在Python程序中可使用第三方模块tablib将数据导出为不同的文件格式,包括Excel、JSON、HTML、Yaml、CSV和TSV等格式。在使用模块tablib之前,需要先通过如下命令安装tablib。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_02.jpg?sign=1738835727-Gz16AESBVAbnHyRpwFJTSZnXFKOLTy3T-0-90ae2fa8ff02002d07f7c1854fe8b0d6)
在接下来的内容中,将详细讲解使用tablib模块的知识。
4.1.1 基本用法
1.创建Dataset(数据集)
在tablib模块中,使用tablib.Dataset创建一个简单的数据集对象实例:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_03.jpg?sign=1738835727-rPqGEE40T7hXA8yLjGRJ1VbTRDxVvW6Q-0-75f02edc9cb5c3dda5b9eaeac2f0b8d1)
接下来就可以填充数据集对象和数据。
2.添加Rows(行)
若想收集一个简单的人名列表,需输入下面的代码。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_04.jpg?sign=1738835727-DNA492tkhSeN8OXehczx9n6kDoHcUDHa-0-a627790e5638b7c3b720ad42afb09b47)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_01.jpg?sign=1738835727-SxgTtf5TMOq7yx6Kp7mjDAJBeMLIWAk7-0-09c6a0eba74c05d6238e3eec0531b10c)
在Python中可以通过下面的代码获取人名。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_02.jpg?sign=1738835727-Jg2XnKXaDHIUg0daNLLMkwUDDrL8XR6o-0-eba3c1afcee46b05db62bd5bb4c7d927)
3.添加Headers(标题)
通过下面的代码可以在数据集中添加标题。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_03.jpg?sign=1738835727-I9kLDJ3kl9fMvkHt172aB1MDEzSqfYz1-0-ef36bf963bd1d3f4effe47cfee1ac01d)
通过下面的代码获取数据集信息。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_04.jpg?sign=1738835727-pxUwaF3TXmqxnEolC5sdwOO1eOnllmRs-0-b44656236101f4050b0d8715c0d97404)
4.添加Columns(列)
在数据集中可以继续添加列,如下面的代码。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_05.jpg?sign=1738835727-INK8FJ2lABeYlHpeuzjSahsjEiDTZWhA-0-83cc59710f97288d2cfb03a53c1d9aa1)
通过下面的代码获取数据集信息。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_06.jpg?sign=1738835727-MUSaWW8cO3B9IqbRlweMFt0VHdE4Sc41-0-3873f9eb7f1508684b2ec024448d2a52)
5.导入数据
在创建tablib.Dataset对象实例后,可以直接导入已经存在的数据集,下面是导入CSV文件数据的代码。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_07.jpg?sign=1738835727-KUpz4FFcGqqyAPuhodBiiV2w4NkDDkrc-0-6d9e7850ffe4d4fdfe2bf1d3e75ec43d)
在tablib模块中一旦需要导入数据,只要具备适当的格式化程序导入窗口,就可以从各种不同的文件类型导入数据。
6.导出数据
Tablib模块的主要功能是将数据导出为不同类型的文件,例如下面的代码将我们前面创建的数据集导出为CSV文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_08.jpg?sign=1738835727-UnK0uxOJot5HRla4KR2nbm8k9XShDX9q-0-bc6f74c41c3f7ce542fc44dfded1b104)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_01.jpg?sign=1738835727-ChlxLrEG8iAsqg0hUGkkaQnk7eCFZtGy-0-397763d4ebfcb734045ee428af4c216b)
通过下面的代码将数据导出为JSON文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_02.jpg?sign=1738835727-mKDq26HTnnsUQISzyRJVZXVk2EtUwRv1-0-a6ac6d091e1390047f94233ac368be42)
通过下面的代码将数据导出为YAML文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_03.jpg?sign=1738835727-uUrmOgHFiOz10aT2ArgKYgj5NMJsskbz-0-6a1534df7653fb9e0798212e191ce0c5)
通过下面的代码将数据导出为Excel文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_04.jpg?sign=1738835727-77b2IsqnDxmWIwUNYzY8dzKAD5kVPFye-0-7a024b191a46a75933de205953e2a0ab)
4.1.2 操作数据集中的指定行和列
在下面的实例文件Tablib01.py中,演示了使用tablib模块操作数据集中的指定行和列的过程。
源码路径:daima\4\4-1\Tablib01.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_05.jpg?sign=1738835727-XWzMRh1FGtO5xUPyuUPpFDW2SiVhrY2Z-0-9feeba2f0c679445e42da0bbe6289f90)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_06.jpg?sign=1738835727-SqcRtnYXerMMC61nEYpo5GhMHULUlwgR-0-c3ea99a7bb816fa453164926ef82a101)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/98_01.jpg?sign=1738835727-RZaauTI8DZiev9gH62LT81x3tgaE1opv-0-39619df52993c656591d508a6cd355a6)
4.1.3 删除并导出不同格式的数据
在下面的实例文件Tablib02.py中,演示了使用tablib模块删除数据集中指定数据,并将数据导出为不同文件格式的过程。
源码路径:daima\4\4-1\Tablib02.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/98_02.jpg?sign=1738835727-PJ79xOZ3CaMJCiPMpUpd9JsKykOiqWxV-0-26889a56da7e0a0ddc6ef0292546dfa7)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/98_03.jpg?sign=1738835727-ppmcna8PYDopeN60uGsFBF4kqSp1fcGv-0-dd12081f0608f0d74da5b1250bf7369b)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/99_01.jpg?sign=1738835727-Y4mJ15TjJyZfH7TNiZ41Q6SjzfIceWEf-0-1d7bfbd6661fefb636f2e08be994d075)
4.1.4 生成一个Excel文件
在下面的实例文件Tablib03.py中,演示了将tablib数据集导出到新建Excel文件的过程。
源码路径:daima\4\4-1\Tablib03.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/99_02.jpg?sign=1738835727-jJAh0yCDtjmHyVVip262R4XVn3CEvs1Y-0-daf94b498d7d306c16270f2c2d4feaba)
执行后创建一个Excel文件excel.xls,里面填充的是数据集中的数据,如图4-1所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/100_01.jpg?sign=1738835727-dzGlWGciyO89xv3QDLOIPDkIDRYJh5pg-0-6656ed268dbf5060fcb5b8db1b95e174)
图4-1 创建的Excel文件
4.1.5 处理多个数据集
在现实应用中,有时需要在表格中处理多个数据集集合,如将多个数据集数据导到一个Excel文件中,这时可使用tablib模块中的Databook实现。如在下面的实例文件Tablib04.py中,不但演示了增加、删除数据集数据的方法,而且演示了将多个tablib数据集导出到Excel文件的过程。
源码路径:daima\4\4-1\Tablib04.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/100_02.jpg?sign=1738835727-FwEdAQhBE30hOCvkh991zYazcENoOFxL-0-e9afd04123c0f51e0b98a7c249c4d173)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/101_01.jpg?sign=1738835727-eD371AxyWVTjWis5Y7vXyueoCbJ9pfEx-0-a94b9daf9facf3615625c36a64544ab2)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/101_02.jpg?sign=1738835727-LPjlEscbjkbIBpikzbqgnVDShJIZEuQE-0-88db1e79bb14205904d61e395c756b36)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/102_01.jpg?sign=1738835727-KpFMs4ArpFUyPkwxcqB4ME77HKpUfdp9-0-0c4ce52d0bc6ea393cd155ba13e0000a)
执行后创建Excel文件mydata.xls,其中保存了从数据集中导出的数据,如图4-2所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/103_01.jpg?sign=1738835727-n76PnjGde0vzkNWAJyDpeRY60rDgSnRp-0-6e83d502d668319f6b1152ed71ecd26b)
图4-2 Excel文件中的数据
4.1.6 使用标签过滤数据
在使用tablib数据集时,可将一个作为参数的标签添加到指定行。在后面的程序中可基于任意条件的数据通过这个标签筛选数据集。如在下面的实例文件Tablib05.py中,演示了使用标签过滤tablib数据集的过程。
源码路径:daima\4\4-1\Tablib05.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/103_02.jpg?sign=1738835727-wsHgNOp42a1Kh4x00yCZs8XaUU6xtdEw-0-675d543060c493eabbb0c5b373d71ce9)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/103_03.jpg?sign=1738835727-lqrb5r7dokrYEjD5Ke3qSPlCAoeknMOr-0-5abe3ee6eeef64506aed3b93ac14868c)
4.1.7 分离表格中的数据
当将tablib数据导出到某个格式的文件中时,有时需要将多种数据集对象进行分类。如在下面的实例文件Tablib06.py中,演示了将两组数据分离导入Excel文件的过程。
源码路径:daima\4\4-1\Tablib06.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/103_04.jpg?sign=1738835727-RpX3oivpFg2tm943UTUypSJiwypLtcSN-0-356bd3113ec117fb8015083fb37f7ebd)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/104_01.jpg?sign=1738835727-qoY4UZBb1p4j9DaZhDFPeGbogIRqkgmf-0-a56b184560660d4f722e0249136756f0)
执行后会将Tablib分类别导入到Excel文件中,如图4-3所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/104_02.jpg?sign=1738835727-l16bDIl27ccfGs7iSCIvuGDiDv56LHtq-0-83994b7498d967980cc1a6b49ebc952f)
图4-3 分离的数据