![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=1738883210-9RDwyX6d0NoUHN6fJLnij4Rz9U0PjAJJ-0-3feec7b1c14c885c0530ba1ca9dbbb76)
在Python程序中可使用第三方模块tablib将数据导出为不同的文件格式,包括Excel、JSON、HTML、Yaml、CSV和TSV等格式。在使用模块tablib之前,需要先通过如下命令安装tablib。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_02.jpg?sign=1738883210-ZROwITHcCG6Phm80XnMZVEHxdawjv8GE-0-3deee665ba233d2a13529d79c704d301)
在接下来的内容中,将详细讲解使用tablib模块的知识。
4.1.1 基本用法
1.创建Dataset(数据集)
在tablib模块中,使用tablib.Dataset创建一个简单的数据集对象实例:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_03.jpg?sign=1738883210-Vqu3hHWeCn6fy7xQZ98wzs4oC2rZ6VYg-0-caf6e3233a0400d7e68086f993c975ab)
接下来就可以填充数据集对象和数据。
2.添加Rows(行)
若想收集一个简单的人名列表,需输入下面的代码。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/95_04.jpg?sign=1738883210-YdMtPsRbclLTrvsXW57rAbGxppZ8lurF-0-18fee93e0e507eb5105435468d1c71ec)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_01.jpg?sign=1738883210-0vXLw0Ni2mNuvbq36SV43swHYsEo1Q0A-0-b76c691868303cfb957a2534ba321723)
在Python中可以通过下面的代码获取人名。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_02.jpg?sign=1738883210-34lUI1LFNaIEyc45yesF2AD8tJY6DsPb-0-41f1ef2aad6f9bcd7d950c9c8802c575)
3.添加Headers(标题)
通过下面的代码可以在数据集中添加标题。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_03.jpg?sign=1738883210-HnBkBtweQS7CB4LxkCzJ3ODGkTukawMI-0-f8899a615c19f66d370d15c980234c74)
通过下面的代码获取数据集信息。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_04.jpg?sign=1738883210-qMFTSu50T945PEFi8JDqdnQUEUngieHc-0-0223fc6b2097d5f5a718282ecf4fc7c9)
4.添加Columns(列)
在数据集中可以继续添加列,如下面的代码。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_05.jpg?sign=1738883210-E7Te1TeUUKQ0HJTrAJrN3WywDuP0UvIE-0-89eb9759793dea748b52e1b7ad5d73f1)
通过下面的代码获取数据集信息。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_06.jpg?sign=1738883210-yEFGMG1lsdtLjQ1boPmucuLsLjLnpuVO-0-27a4337c0116edd730809341ee3ee84e)
5.导入数据
在创建tablib.Dataset对象实例后,可以直接导入已经存在的数据集,下面是导入CSV文件数据的代码。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_07.jpg?sign=1738883210-4eyYwTGBtfBZfK578rXDyxTeQJ9btwc1-0-6388ff87b9646592f7ce0eb1512ff505)
在tablib模块中一旦需要导入数据,只要具备适当的格式化程序导入窗口,就可以从各种不同的文件类型导入数据。
6.导出数据
Tablib模块的主要功能是将数据导出为不同类型的文件,例如下面的代码将我们前面创建的数据集导出为CSV文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/96_08.jpg?sign=1738883210-aetyzpCcpLRaZB0CeVh5WJGAOFISaTUl-0-d4bfda60ecf371d77eaa879da26888fc)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_01.jpg?sign=1738883210-zEgLGJlKMzonImpGbTzxUhGpnmsMpxmQ-0-a6c22e165ff894a923ee3706d25952dc)
通过下面的代码将数据导出为JSON文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_02.jpg?sign=1738883210-acKaCxKASYcB8GvePmB0v1iRLbEbfdAr-0-352bfba046e3702051bc5c995f84c5f0)
通过下面的代码将数据导出为YAML文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_03.jpg?sign=1738883210-lTXKEUNGvZa5fe2HBF9umJdgouQ7W2TO-0-dedf061e4d1a5235d34e0f9990fb837c)
通过下面的代码将数据导出为Excel文件格式。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_04.jpg?sign=1738883210-D3IHo5I73QQrLEahxyyTFz7XIJh3579k-0-5e695c30cb94eab0477f8d2513cf6b98)
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=1738883210-seQyj4kFVxOyWKLSWFMxVWalC36waJQd-0-1d6eff367e74cc219e38977b7a0d003e)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/97_06.jpg?sign=1738883210-8AG0Jc4UWO8Rd4BrhOaVzo2trv24MmH8-0-5c2cc8f24864d588e6b196d359da5681)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/98_01.jpg?sign=1738883210-Tv7lfJ5xVokt8cSFvt4hESmSiCRjHwyU-0-cb8cf9f28f0a4681973c8a96ab5c36a4)
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=1738883210-3xNvhVN8zP317zFh7wHCQ4dWl7vSitrM-0-edf74396325db3a6744d3cf7a4fc6328)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/98_03.jpg?sign=1738883210-H3ByQjM8fiodBiUwiBQYtCVbilaWCzIa-0-4aff024a1df017fab8625278abbcbbf0)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/99_01.jpg?sign=1738883210-bkn7pEdURyT3asOheA3gVD4u8Um0787k-0-ef7e367fdac94db051a1196d7d40d15e)
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=1738883210-JbA7bZ6MxO17DjxAtxH4zKXwpAYa7YzH-0-70c519dd16a224dba2efd5738fe4baf0)
执行后创建一个Excel文件excel.xls,里面填充的是数据集中的数据,如图4-1所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/100_01.jpg?sign=1738883210-HeFfruFCqoLUhBuq70nv545M91IXGpSd-0-59bd38ef40fd55efe866388e7a28d8a2)
图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=1738883210-eXbomqibu5LmREQk795Wn6yr1R9RSCxA-0-1c8b148bc04cf6d2b434cafe1a34e81c)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/101_01.jpg?sign=1738883210-ieHv5FG3RblDg4WrJZ0B8xKNvC46Swur-0-f194b39946f1cf905d2b5ebd51c774e2)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/101_02.jpg?sign=1738883210-ttHMJPjToUuUsHqXS8EssgDgbPodeeGR-0-4c4891627a9cca55fbeefd0a3372029b)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/102_01.jpg?sign=1738883210-NRVfLU3jmrSRi7Ias3JpxRhbwIuHOAaB-0-69c2627dcb8d258ed94c13641b759ac2)
执行后创建Excel文件mydata.xls,其中保存了从数据集中导出的数据,如图4-2所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/103_01.jpg?sign=1738883210-kcin2jIryoBS7TBkkbLEzcQ27x22SU64-0-ee18c920b4cfcc94b4c30058baa81566)
图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=1738883210-LMpFT1TXCm1s82NUdJbCWgr4OncKsrhG-0-7e177ef1082536c89da57ed276a789a9)
执行后输出:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/103_03.jpg?sign=1738883210-kW581Zs4ZwSbhoICKjjSEaaNIjfS8jY1-0-e562359f4762dbebd868093e73b4c44a)
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=1738883210-bag6F0sRoWW3jnVoNWNNBSRhGnpApljK-0-8b5cdf1222590afd3aa6a3ed1d713a18)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/104_01.jpg?sign=1738883210-T5FIYrnLyJm3TsB5WW7kcd0vFnTj4fBP-0-c69a3554fae0e9caa3a74f772dfc1a16)
执行后会将Tablib分类别导入到Excel文件中,如图4-3所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/104_02.jpg?sign=1738883210-RyBioOwKwfMlvDU72zTJZTvO4Ubq9mMm-0-c58b4b3ada7fe19b1a4fe11b72b4e87c)
图4-3 分离的数据