AWS SDK for pandas 实战教程:Amazon S3 数据操作指南
前言
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])
最佳实践建议
- 批量操作:对于大量文件,优先使用前缀方式而非逐个列出文件路径
- 分区策略:对于大数据集,考虑使用分区存储提高查询效率
- 文件格式选择:
- 分析场景:Parquet
- 交换数据:CSV/JSON
- 报表输出:Excel
- 错误处理:添加适当的异常处理逻辑应对网络问题或权限问题
总结
AWS SDK for pandas 提供了简洁高效的接口来处理 S3 上的各种数据格式。通过本教程,您应该已经掌握了基本的读写操作以及一些高级功能。在实际项目中,可以根据具体需求选择合适的文件格式和操作方法。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考