python:Tablib 一个用来处理表格数据的库

517 阅读3分钟

Tablib 是一个 MIT 许可的格式不可知的表格数据集库,用 Python 编写。它允许您导入、导出和操作表格数据集。

快速入门

首先安装第三方包pip install tablib;pip3是因为电脑上安装了python2.7版本

lifeng@apple ~ % pip3 install tablib 
Collecting tablib
  Using cached tablib-3.0.0-py3-none-any.whl (47 kB)
Installing collected packages: tablib
Successfully installed tablib-3.0.0

其次开始导入包,并创建对象,这个对象就是一个数据集,示例例如:

import tablib


t = tablib.Dataset()

最后开始往里面添加数据,示例如下:

  • 添加行
import tablib


t = tablib.Dataset()

names = ["张三    50""李四    20"]
for name in names:
    n, s = name.split()
    t.append([n, s])
  • 添加标题
t.headers = ["姓名""分数"]
  • 添加列
t.append_col([2324], "年龄")

合在一起运行并展示结果,示例如下:

import tablib


t = tablib.Dataset()

names = ["张三    50""李四    20"]
for name in names:
    n, s = name.split()
    t.append([n, s])

t.headers = ["姓名""分数"]
t.append_col([2324], "年龄")
print(t.dict)


# 运行结果
[OrderedDict([('姓名''张三'), ('分数''50'), ('年龄'23)]), OrderedDict([('姓名''李四'), ('分数''20'), ('年龄'24)])]

Process finished with exit code 0

从返回结果可以清晰看到,是OrderedDict类,它的作用就是按照元素初始添加顺序进行的…

导入数据

tablib.Dataset通过导入预先存在的文件来创建对象很简单。示例如下:

import tablib


with open("data_list.xlsx""rb"as r:
    data = tablib.Dataset().load(r)
    print(data)

# 运行结果
姓名|分数|年龄
--|--|--
张三|50|23
李四|20|24

Process finished with exit code 0

目前支持导入csv, tsv, dbf, xls, xlsx格式,这也是官网公布的,实操一下csv, tsv, dbf, xlsx是可行的。

导出数据

  • 导出csv格式数据
print(t.export("csv"))

# 运行结果
姓名,分数,年龄
张三,50,23
李四,20,24

Process finished with exit code 0
  • 导出json格式数据
print(t.export("json"))

# 运行结果
[{"姓名""张三""分数""50""年龄": 23}, {"姓名""李四""分数""20""年龄": 24}]

Process finished with exit code 0
  • 导出yaml格式数据
print(t.export("yaml"))

# 运行结果
- {分数: '50', 姓名: 张三, 年龄: 23}
- {分数: '20', 姓名: 李四, 年龄: 24}

Process finished with exit code 0

官方介绍还可以导出xls和pf格式,导入xls格式得安装依赖包xlwt和xlrd;导出pf格式得安装依赖包panads,如果不安装第三方包去直接使用的话就会抛出错误。

获取和删除

  • 索引获取、切片获取和键获取,示例如下:
#   索引获取数据
print(t[0])

#   切片获取数据
print(t[0:2])

#   获取全部数据
print(t.dict)

#   键名获取指定列
print(t["姓名"])

#   求平均年龄
print(sum(t["年龄"]) / len(t["年龄"]))
  • 索引删除、切片删除和键删除,示例如下:
#   索引删除值
del t[0]

#   切片删除值
del t[0: 2]

#   键名删除指定列
del t["姓名"]

文件中写入数据

import tablib


#   准备数据
data_one = [
    ('11/24/09''张三'56.),
    ('05/24/10''李四'62.)
]

data_two = [
    ('11/24/09''王二二'56.),
    ('05/24/10''皮球球'62.)
]

#   创建对象
data = tablib.Dataset()
data.headers = ['日期''姓名''分数']

#   循环插入数据
for row in data_one:
    data.append(row)

#   循环插入数据
for row in data_two:
    data.append(row)

#   往文件中写入数据
with open('testing.xlsx', 'wb') as f:
    f.write(data.export('xlsx'))

这里的写入文件不需要先创建好;它会自动识别,不存在时会自动创建,存在时就进行覆盖。运行后完成后截图如下:

图片.png


以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!

未完,待续…

一直都在努力,希望您也是!

公众号图片.jpeg