python库(13):Tablib库简化数据处理

1 Tablib简介

数据处理是一个常见且重要的任务。无论是数据科学、机器学习,还是日常数据分析,都需要处理和管理大量的数据。然而,标准库中的工具有时显得不够直观和简便。这时,我们可以借助第三方库来简化数据处理流程。Tablib 就是这样一个强大的数据处理库,它提供了一套简单易用的 API 来处理各种数据格式。

Tablib 主要用于处理表格数据,并且支持多种数据格式的导入和导出,包括 CSV、Excel、JSON、YAML 等。Tablib 的核心是 Dataset 对象,它类似于一个电子表格,包含行和列的结构化数据。

2 安装Tablib

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tablib

如下图:

3 代码示例

3.1 创建Dataset

首先,我们来看如何创建一个 Dataset 对象,并向其中添加数据。

import tablib

# 创建一个Dataset对象
data = tablib.Dataset()
# 添加表头
data.headers = ['name', 'age', 'city']

# 添加数据行
data.append(['Alice', 30, 'New York'])
data.append(['Bob', 25, 'Los Angeles'])
data.append(['Charlie', 35, 'Chicago'])

print(data.export('csv'))

在这个例子中,我们首先创建了一个 Dataset 对象,并设置了表头。然后通过 append 方法添加了几行数据。最后,我们将数据导出为 CSV 格式并打印出来,如下图:

查看源码,Dataset对象支持的格式如下:

3.2 数据导出

Tablib 支持将数据导出为多种格式。以下是一些常用格式的导出示例:

import tablib


# 创建一个Dataset对象
data = tablib.Dataset()
# 添加表头
data.headers = ['name', 'age', 'city']

# 添加数据行
data.append(['Alice', 30, 'New York'])
data.append(['Bob', 25, 'Los Angeles'])
data.append(['Charlie', 35, 'Chicago'])

# 导出为 CSV
csv_data = data.export('csv')
print(csv_data)

# 导出为 JSON
json_data = data.export('json')
print(json_data)

# 导出为 Excel
with open('data.xls', 'wb') as f:
    f.write(data.export('xls'))

可以看到如下:

内容如下:

注意:

导出xls格式的包可能需要单独安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tablib[xls]

缺少文件时会有提示,源代码如下:

3.3 数据导入

同样,Tablib 也支持从多种格式导入数据。以下是从 CSV 导入数据的示例:

import tablib


# 从 CSV 导入数据
csv_data = """name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago"""

data = tablib.Dataset()
data.csv = csv_data

print(data.dict)

在这个例子中,我们首先定义了一段 CSV 格式的字符串,然后使用 Dataset 对象的 csv 属性将其导入。

3.4 合并多个数据集

假设我们有两个 CSV 文件,分别包含不同的用户数据。我们可以使用 Tablib 来合并这些数据。

import tablib

# 第一个数据集
data1 = tablib.Dataset()
data1.headers = ['name', 'age', 'city']
data1.append(['Alice', 30, 'New York'])
data1.append(['Bob', 25, 'Los Angeles'])

# 第二个数据集
data2 = tablib.Dataset()
data2.headers = ['name', 'age', 'city']
data2.append(['Charlie', 35, 'Chicago'])
data2.append(['David', 28, 'Houston'])

# 合并数据集
data1.rpush(*data2.dict)

print(data1.export('csv'))

在这个示例中,我们创建了两个 Dataset 对象,然后使用 rpush 方法将第二个数据集的数据添加到第一个数据集中。

3.5 过滤数据

Tablib提供了filter方法,以根据数据集的标签(tags)来过滤数据。

import tablib

fruits = tablib.Dataset()

fruits.headers = ['name', 'color']
# 添加tags为fruit与sour的行
fruits.append(['tomato', 'red'], tags=['fruit', 'sour'])
fruits.append(['strawberry', 'red'], tags=['fruit', 'sweet'])
fruits.append(['corn', 'yellow'], tags=['vegetable', 'sweet'])
fruits_filter = fruits.filter(['vegetable'])
print(fruits_filter.export('csv'))

结果如下:

3.6 数据统计

import tablib

# 创建数据集
data = tablib.Dataset()
data.headers = ['name', 'age', 'city']
data.append(['Alice', 30, 'New York'])
data.append(['Bob', 25, 'Los Angeles'])
data.append(['Charlie', 35, 'Chicago'])

# 计算平均年龄
ages = [int(row['age']) for row in data.dict]
average_age = sum(ages) / len(ages)

print(f'平均年龄: {average_age}')

在这个示例中,我们首先提取出所有用户的年龄,然后计算平均值:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不死鸟.亚历山大.狼崽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值