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}')

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

相关推荐

  1. python数据处理分析(二)

    2024-07-13 07:58:02       26 阅读
  2. python数据处理分析(一)

    2024-07-13 07:58:02       27 阅读
  3. Python数据处理和常用(如NumPy、Pandas)

    2024-07-13 07:58:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 07:58:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 07:58:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 07:58:02       58 阅读
  4. Python语言-面向对象

    2024-07-13 07:58:02       69 阅读

热门阅读

  1. DEBUG:组装dell主板问题

    2024-07-13 07:58:02       21 阅读
  2. c++【入门】计算(a+b)*c的值

    2024-07-13 07:58:02       21 阅读
  3. C++:strcut与class的区别

    2024-07-13 07:58:02       27 阅读
  4. ref和reactive

    2024-07-13 07:58:02       24 阅读
  5. 如何在SQLServer中更改端口

    2024-07-13 07:58:02       23 阅读
  6. Bilibili Android一二面凉经(2024)

    2024-07-13 07:58:02       23 阅读
  7. CollectionUtils的使用

    2024-07-13 07:58:02       21 阅读
  8. hivehook 表血缘与字段血缘的解析

    2024-07-13 07:58:02       25 阅读
  9. 404/400、Flask、WSGI

    2024-07-13 07:58:02       23 阅读