tablib简介
tablib为requests作者kennethreitz
维护,支持python2到python3.简单的说就是一个通用的数据集,操作类似数据库,但又不是一个数据库的代替,因为缺少查操作,但是可以通过tablib将数据集轻松转为xls、csv、yaml等格式。简单的来说就是用来处理tabular dataset
,为这些不同格式的数据集提供一个统一的格式。
目前支持下面这些输出格式:
- Excel (Sets + Books)
- JSON (Sets + Books)
- YAML (Sets + Books)
- HTML (Sets)
- TSV (Sets)
- OSD (Sets)
- CSV (Sets)
- DBF (Sets)
基本使用
创建Dataset对象
|
|
这样相当于构造了一张表:
first_name | last_name |
---|---|
John | Adams |
George | Washington |
其中最重要的就是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
输出当前属性(列)总数
常用方法
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,包括表头和内容
新增列
|
|
这样表就变成了:
first_name | last_name | age |
---|---|---|
John | Adams | 90 |
George | Washington | 67 |
Henry | Ford | 83 |
|
|
对记录操作
|
|
对属性操作
|
|
删除记录
|
|
可见记录也是从0开始索引的
删除记录操作也支持切片
删除属性
|
|
导入数据
|
|
导出数据
csv
|
|
json
|
|
yaml
|
|
excel
|
|
注意要以二进制形式打开文件
dbf
|
|
高级使用
动态列
可以将一个函数指定给Dataset对象
|
|
函数的参数row
传入的是每一行记录,所以可以根据传入的记录进行更一步的计算:
|
|
tag
可以给记录添加tag,之后通过tag来过滤记录:
|
|
Excel Workbook With Multiple Sheets
it’s quite common to group multiple spreadsheets into a single Excel file, known as a Workbook.
|
|