使用AWS Data Wrangler(AW​​SWRANGLER)SDK与Amazon S3进行互动以备大熊猫:综合指南
#python #s3 #pandas #datawrangling

介绍

Amazon S3是一种广泛使用的云存储服务,用于存储和检索数据。 AWS Data Wrangler(AW​​SWRANGLER)是一个Python库,简化了与包括Amazon S3在内的各种AWS服务交互的过程,尤其是与Pandas DataFrames结合使用。在本文中,我将指导您如何有效地使用Awswrangler库与Amazon S3进行交互,重点介绍与Pandas DataFrames的数据操作。

目录

  1. AWS数据牧马人简介

    • 什么是AWS Data Wrangler?
    • 关键特征和好处
  2. 先决条件

    • 设置您的AWS帐户
    • 安装所需库
  3. 连接到Amazon S3

    • 配置AWS凭据
    • 创建连接
  4. 上传和下载数据

    • 将数据加载到S3
    • 从S3
    • 读取数据
  5. 结论

    • 利用Awswrangler进行S3数据操作
    • 进一步学习资源

1. AWS数据牧马人简介

什么是AWS数据牧马人?

aws Data Wrangler是一个Python库,简化了与各种AWS服务进行交互的过程,该过程构建在一些有用的数据工具和开源项目(例如PandasApache ArrowBoto3)之上。它提供了简化的功能,可以连接,检索,转换和加载来自AWS服务的数据,并重点关注Amazon S3。

关键特征和好处

  • 无缝集成:使用熟悉的方法将AWS服务与Pandas DataFrames集成。
  • 有效的数据操纵:使用优化的熊猫方法有效地执行数据转换。
  • 简化的连接:轻松配置AWS凭据并建立与AWS服务的连接。
  • 错误处理:内置错误处理和记录机制可提高可靠性。

2.先决条件

设置您的AWS帐户

启动之前,请确保拥有带有S3访问权限的必要IAM(身份和访问管理)用户凭据的AWS帐户设置,并在本地配置了AWS CLI

安装所需的库

在孤立的环境中工作是一种很好的习惯,特别是当您尝试一些新的Pythn库时,因此,如果您是Conda用户,则应首先创建一个conda环境,在此之后安装AwswSwrangler之后。

首先通过运行:
创建您的conda环境

conda create -n data-wrangling python=3.11

然后激活运行的环境:

conda activate data-wrangling

Activating conda environment

现在是时候使用以下命令在环境中安装所需的库:

pip install awswrangler pandas boto3

3.连接到亚马逊S3

创建S3存储桶

为了创建S3存储桶,我们将使用AWS CLI,如果您遵循以前的AWS帐户的指南,则应将访问密钥存储在您的 c:\ users \%userprofile%中。 AWS 目录

Image description

,然后您可以通过运行:
从命令行创建存储桶

aws s3api create-bucket --bucket aws-sdk-pandas72023 --region us-east-2 --create-bucket-configuration LocationConstraint=us-east-2

我已经称为bucket aws-skd-pandas72023 ,但是只要遵循S3桶的命名规则Bucket naming rules

,您就可以将其命名为

然后,您将在命令行中接收以下输出:

Bucket creation output

您将能够可视化AWS用户中新创建的存储桶:

Image description

创建连接

awswrangler库internally handles Sessions和AWS使用boto3凭证,以使用您的AWS凭据连接到您的存储桶,因此除了导入AWSWRANGLER,您还应该:

import boto3

您需要导入的所有软件包如下:

#Importing required libraries
import awswrangler as wr
import yfinance as yf
import boto3
import pandas as pd
import datetime as dt
from datetime import date, timedelta

您还可以git克隆具有本教程中使用的代码的repository

如果您已经克隆了存储库,则注意到我们正在使用库 yfinance 从API中提取库存数据,然后将其存储在Pandas DataFrame中,因此我们可以编写提取的提取的内容使用 awswrangler

Get stock data function

awswrangler API能够从巨大的文件格式中读取和写入数据,并读取Numeroius数量的AWS服务,请参阅this list以获取更多信息。

4.从S3存储桶中加载和下载数据

介绍API上可用的所有可读取和写入数据的服务,将使本教程很长,因此我们将在数据项目中使用常用的数据源存储,例如S3。

将数据上传到S3

在上面共享的存储库中,我编写了一个函数,该函数编写了用 get_data_from_api 函数提取的数据框

def write_data_to_bucket(file_name:str, mode:str):
    """
    Parameters:
    ----------
    mode(str): Available write modes are 'append', 'overwrite' and 'overwrite_partitions'
    """

    path = f"s3://{bucket}/raw-data/{file_name}"
    #Sending dataframe of corresponding ticker to bucket
    wr.s3.to_csv(
        df=df,
        path=path,
        index=True,
        dataset=True,
        mode=mode
    )

所以让我们通过传递NVDA stock的库存符号将 get_data_from_api 纳入行动

NVIDIA Corporation

如果我们转到S3存储桶,我们会注意到,在存储库中将有一个新文件夹,其中包含库存的名称,其中有一个CSV文件:

Folder created in S3

您也可以将多个数据范围传递到该函数,因此它们将在存储桶中创建:

Downloading multiple dataframes

从S3读取数据

使用Awswrangler从S3存储键读取数据,这是一个非常简单的任务,因为您只需要通过存储文件的S3路径,而PATH_SUFFIX与您使用的方法相对应,在这种情况下,在这种情况下为read_csv。在Awswrangler API reference中找到更多可与此方法一起使用的参数。

在我的教程中,我编写了一个函数,该函数在我们编写来自S3桶中API的数据时存储CSV文件的文件夹名称:

def read_csv_from_bucket(folder_name:str) -> pd.DataFrame:
   df=wr.s3.read_csv(path=f"s3://{bucket}/rawdata/{folder_name}/", 
   path_suffix = ".csv")

   return df

Output from read_csv_from_bucket function

Data stored in S3 bucket

5.结论

API参考页面中有很多方法可与S3交互和其他多个AWS服务。

API Reference

我鼓励您一旦发现与您的ETL和管道集成在一起的有用时,请继续测试。

AWS数据牧马人简化了与Amazon S3的交互作用,为使用PANDAS DataFrames执行数据操作提供了无缝的体验。该教程涵盖了连接到S3,上传,下载和转换数据以及高级交互的基本概念。通过利用AWS Data Wrangler,您可以简化数据工作流程并专注于从数据中获得见解。

欢呼和愉快的编码!

进一步学习的资源