首页 > 编程语言 >python库(13):Tablib库简化数据处理

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

时间:2024-07-14 23:27:42浏览次数:11  
标签:13 python 数据 Dataset Tablib tablib data append

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

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

标签:13,python,数据,Dataset,Tablib,tablib,data,append
From: https://blog.csdn.net/u013938578/article/details/140390667

相关文章

  • python基础学习Day_04
    引言    今天休息,我就开始学习,学了四天的东西,太爽了我靠,今天学习内容:函数lamda,生成器,迭代器模块1.函数函数的定义存在的概念:实现重复的代码块,用来实现单一的功能相关联的代码块。自定一个函数1、关键字def开头:后面跟命名,是否传参用括号显示():函数体2、传参:......
  • 基于java+springboot+vue实现的健身房管理系统(文末源码+Lw)113
     基于SpringBoot+Vue的实现的健身房管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)系统功能:本健身房管理系统管理员,会员,员工。管理员功能有个人中心,会员管理,员工管理,会员卡管理,会员卡类型管理,教练信息管理,解聘管理,健身项目管理,指导项目管理,健身器材管......
  • Python代码 | 井字棋
    importrandomcheckerboard=[[0,0,0],[0,0,0],[0,0,0]]i=0print(f"欢迎来玩井子棋,请在轮到你落子时输入你要下的位置,第x行,第y列,用逗号隔开,例如:1,2")defprint_board():forrowincheckerboard:forcolinrow:ifc......
  • [附开题]flask框架Web民宿管理系统的设计与实现89x8t(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:近年来,随着旅游业的蓬勃发展和消费者出行方式的多元化,民宿作为一种新兴的住宿选择,凭借其独特的居住体验、灵活的租赁方式和个性化的服务,受......
  • [附开题]flask框架Web精品课程网络平台的设计与实现3q7nv(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:随着信息技术的迅猛发展和教育理念的持续革新,传统教学模式正逐步向数字化、网络化转型。精品课程网络平台作为教育信息化的重要载体,不仅能......
  • [附开题]flask框架搬家网平台iz216(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:随着城市化进程的加速和人口流动性的增强,搬家服务需求日益增长,成为现代生活中不可或缺的一部分。然而,传统搬家行业存在信息不对称、服务质......
  • [附开题]flask框架班级管理系统3pdep(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:在教育信息化的浪潮中,传统的班级管理模式面临着诸多挑战。随着学生数量的增加和教育资源的日益丰富,如何高效地管理班级信息、协调班级事务......
  • Python 字典(Dict)详解与实战应用
    目录前言一、字典的定义和创建1.使用花括号定义2.使用dict()函数创建二、字典的三种遍历方式方式1:遍历字典的键,通过键获取值 dict.keys()方式2:遍历字典的值,但不能通过值获取键dict.values()方式3:最常用的方法:直接获取键值对 dict.items()三、字典的常见操作1.添......
  • 13、Oracle中的控制用户权限
    最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。视频链接:【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用如果有侵权,请联系删除,谢谢。学习目标:创建用户创建角色使用GRANT和REVOKE语句赋予和回收权限......
  • Python 潮流周刊第 2 季完结了,分享几项总结
    我订阅了很多的周刊/Newsletter,但是发现它们都有一个共同的毛病:就是缺乏对往期内容的整理,它们很少会对内容数据作统计分析,更没有将内容整理成合集的习惯。在自己开始连载周刊后,我就想别开生面,除了每周更新正刊外,还计划定期做一些盘点。我认为过往周刊值得被串联起来,形成合集后,既......