AWS SDK for pandas 实战教程:Amazon S3 数据操作指南

AWS SDK for pandas 实战教程:Amazon S3 数据操作指南

aws-sdk-pandas aws/aws-sdk-pandas: 是一个用于 Pandas 的 AWS SDK,可以方便地在 Python 中访问 AWS 服务。适合对 AWS、Pandas 和想要实现 AWS 服务访问的开发者。 aws-sdk-pandas 项目地址: https://gitcode.com/gh_mirrors/aw/aws-sdk-pandas

前言

AWS SDK for pandas 是一个强大的 Python 库,它简化了在 AWS 环境中使用 pandas 进行数据处理的过程。本教程将重点介绍如何使用该库与 Amazon S3 进行交互,涵盖多种文件格式的读写操作。

环境准备

在开始之前,请确保已安装以下 Python 包:

import boto3
import pandas as pd
import awswrangler as wr

1. CSV 文件操作

1.1 写入 CSV 文件

将 pandas DataFrame 写入 S3 为 CSV 格式非常简单:

path = f"s3://{bucket}/csv/file1.csv"
wr.s3.to_csv(df, path, index=False)

参数说明:

  • index=False 表示不将 DataFrame 的索引写入文件

1.2 读取单个 CSV 文件

df = wr.s3.read_csv([path])

1.3 读取多个 CSV 文件

方式一:通过文件列表读取
paths = [f"s3://{bucket}/csv/file1.csv", f"s3://{bucket}/csv/file2.csv"]
df = wr.s3.read_csv(paths)
方式二:通过前缀读取
df = wr.s3.read_csv(f"s3://{bucket}/csv/")

2. JSON 文件操作

2.1 写入 JSON 文件

path = f"s3://{bucket}/json/file1.json"
wr.s3.to_json(df, path)

2.2 读取 JSON 文件

读取方式与 CSV 类似,支持单文件、多文件和前缀方式读取。

3. Parquet 文件操作

Parquet 是一种列式存储格式,特别适合大数据场景。

3.1 写入 Parquet 文件

path = f"s3://{bucket}/parquet/file1.parquet"
wr.s3.to_parquet(df, path)

3.2 读取 Parquet 文件

df = wr.s3.read_parquet([path])

4. 其他文件格式

4.1 固定宽度格式文件(FWF)

仅支持读取操作:

df = wr.s3.read_fwf([path])

4.2 Excel 文件

支持读写 Excel 文件:

# 写入
wr.s3.to_excel(df, f"s3://{bucket}/file.xlsx")

# 读取
df = wr.s3.read_excel(f"s3://{bucket}/file.xlsx")

5. 高级功能

5.1 基于修改时间的过滤

可以只读取特定时间后修改的文件:

from datetime import datetime
import pytz

last_modified = datetime(2023, 1, 1, tzinfo=pytz.UTC)
df = wr.s3.read_json(f"s3://{bucket}/json/", last_modified_begin=last_modified)

5.2 文件上传下载

下载对象
# 下载到本地文件
wr.s3.download(path, "local_file.csv")

# 下载到文件对象
with open("local_file.csv", "wb") as f:
    wr.s3.download(path, f)
上传对象
# 从本地文件上传
wr.s3.upload("local_file.csv", path)

# 从文件对象上传
with open("local_file.csv", "rb") as f:
    wr.s3.upload(f, path)

5.3 删除对象

wr.s3.delete_objects([path1, path2])

最佳实践建议

  1. 批量操作:对于大量文件,优先使用前缀方式而非逐个列出文件路径
  2. 分区策略:对于大数据集,考虑使用分区存储提高查询效率
  3. 文件格式选择
    • 分析场景:Parquet
    • 交换数据:CSV/JSON
    • 报表输出:Excel
  4. 错误处理:添加适当的异常处理逻辑应对网络问题或权限问题

总结

AWS SDK for pandas 提供了简洁高效的接口来处理 S3 上的各种数据格式。通过本教程,您应该已经掌握了基本的读写操作以及一些高级功能。在实际项目中,可以根据具体需求选择合适的文件格式和操作方法。

aws-sdk-pandas aws/aws-sdk-pandas: 是一个用于 Pandas 的 AWS SDK,可以方便地在 Python 中访问 AWS 服务。适合对 AWS、Pandas 和想要实现 AWS 服务访问的开发者。 aws-sdk-pandas 项目地址: https://gitcode.com/gh_mirrors/aw/aws-sdk-pandas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柯展隽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值