You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取AWS S3中的gzip文件并完成Python DataFrame转换

从AWS S3读取Gzip文件到Python DataFrame并完成转换

前置依赖安装

先确保安装所需的Python库:

pip install boto3 pandas s3fs
  • boto3:AWS官方SDK,用于和S3交互
  • pandas:处理DataFrame的核心库
  • s3fs:让pandas直接支持S3路径读取

方法1:通过boto3读取到内存再解析(灵活可控)

适合需要对文件流做额外处理的场景:

import boto3
import gzip
import io
import pandas as pd

# 初始化S3客户端(默认读取本地AWS凭证,也可通过参数指定key/secret)
s3 = boto3.client('s3')

# 指定S3桶名和文件路径
bucket_name = 'your-bucket-name'
file_key = 'path/to/your/file.csv.gz'

# 获取S3对象并读取到内存
response = s3.get_object(Bucket=bucket_name, Key=file_key)
gzip_stream = io.BytesIO(response['Body'].read())

# 解压并读取为DataFrame
with gzip.open(gzip_stream, 'rt') as f:
    df = pd.read_csv(f)

方法2:直接用pandas读取(简洁高效)

如果文件是标准CSV/JSON等格式,pandas可直接读取S3上的gzip文件:

import pandas as pd

# 直接指定S3路径,pandas自动处理gzip解压
df = pd.read_csv(
    's3://your-bucket-name/path/to/your/file.csv.gz',
    compression='gzip'
)

# 若是JSON格式的gzip文件,改用read_json
# df = pd.read_json('s3://your-bucket-name/path/to/your/file.json.gz', compression='gzip')

常见DataFrame转换操作示例

拿到DataFrame后,可根据需求执行以下常见转换:

  • 修改列名:
    df.rename(columns={'old_column_name': 'new_column_name'}, inplace=True)
    
  • 数据类型转换:
    # 将字符串列转为日期格式
    df['date_col'] = pd.to_datetime(df['date_col'])
    # 将字符串转为数值类型(无效值转为NaN)
    df['numeric_col'] = pd.to_numeric(df['numeric_col'], errors='coerce')
    
  • 过滤行数据:
    # 保留满足条件的行
    df = df[df['value'] > 100]
    # 剔除指定列的空值行
    df = df.dropna(subset=['critical_col'])
    
  • 新增计算列:
    df['total_amount'] = df['price'] * df['quantity']
    
  • 分组聚合:
    grouped_df = df.groupby('category')['total_amount'].sum().reset_index()
    

注意事项

  • 确保AWS账号拥有目标S3文件的s3:GetObject权限
  • 处理超大文件时,建议用chunksize参数分块读取,避免内存溢出:
    chunk_iter = pd.read_csv('s3://your-bucket/path/to/large/file.csv.gz', compression='gzip', chunksize=10000)
    for chunk in chunk_iter:
        # 对每个数据块执行处理逻辑
        process_chunk(chunk)
    

内容的提问来源于stack exchange,提问作者SARVESH DESHPANDE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:15:49