조이 생각

반응형

AWS S3에 있는 엑셀데이터를 Pands의 Data Frame 형태로 읽어오겠습니다.

 

1. AWS S3 Client 생성
import boto3

accessKey = '본인 aws 접근 키'
secretKey = '본인 aws 비밀 키' 
region = '리전 명'

# s3 클라이언트 생성
s3 = boto3.client('s3', aws_access_key_id=accessKey, aws_secret_access_key=secretKey, region_name=region)

S3의 bucket과 연결해줄 client를 생성한다.

 

 

Excel 파일 하나 읽어오기 
import os

bucket_name = '가져오려는 데이터의 버킷 명'
prefix = '버킷 밑의 하위경로/파일 명'

가져올 버킷 명과 세부 파일 경로 + 파일 명을 변수에 저장해 준다.

 

import pandas as pd

obj = s3.get_object(Bucket=bucket_name, Key=prefix)
df = pd.read_excel(io.BytesIO(obj['Body'].read()))
print(df)

그리고 만들어준 client를 이용해 데이터를 읽어와 pandas의 data frame으로 변환해 준다.

df 를 출력해보면, 엑셀의 내용과 row수 column 수를 리턴해 준다.

 

 

Excel 파일 여러개 읽어오기 

여러개의 엑셀파일을 읽어올 경우 읽어올 엑셀파일의 정보를 file_list 변수가 가지고 있다고 가정한다.

all_df = pd.DataFrame()  # 전체 엑셀 데이터를 합칠 data frame

for file in file_list:
    obj = s3.get_object(Bucket=bucket_name, Key=file)
    df = pd.read_excel(io.BytesIO(obj['Body'].read()))
    all_df.append(df, ignore_index=True)

 file_list 에는 버킷의 하위 파일 경도들을 직접 list로 만들어 넣어도 되고

버킷의 원하는 경로 밑의 파일 리스트를 가져와도 된다.

 

all_df는 전체 엑셀 데이터를 하나로 합쳐줄 data frame이며, 

엑셀파일을 하나씩 df 로 변환해 all_df에 붙여주는 코드이다.

 

 

 

원하는 경로의 하위 파일 리스트 가져오는 방법

 

[Amazon S3] python 에서 AWS S3 데이터 리스트(object list) 가져오기

python 에서 AWS 데이터 스토리지인 S3에 접근하여 원하는 경로에 있는 파일 리스트를 읽어오는 방법입니다. 1. boto3 패키지 설치 우선 python 에서 aws s3에 접근하기 위해서는 boto3 패키지 설치를 해야

joytk.tistory.com

 

 

도움이 되셨다면 공감(하트) 부탁드립니다.

감사합니다. :)

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band
loading