เปิดไฟล์ส่วนตัว
สภาเมืองต้องการดูแนวโน้มในภาพรวม จึงขอให้ Sam รวบรวมคำร้องทั้งหมดตั้งแต่ต้นปี 2019 เป็นต้นมา Sam จึงต้องอ่านไฟล์ CSV รายวันจาก bucket 'gid-requests' แล้วนำมาต่อกัน อย่างไรก็ตาม ไฟล์ใน gid-requests เป็นไฟล์ส่วนตัว Sam สามารถเข้าถึงได้ด้วย key ของตัวเอง แต่บุคคลภายนอกไม่สามารถเข้าถึงได้
ในแบบฝึกหัดนี้ คุณจะช่วย Sam อ่านไฟล์ส่วนตัวเหล่านี้เข้าสู่ pandas แล้วรวมเป็น DataFrame เดียว!
Sam ได้สร้าง S3 client ของ boto3 และกำหนดให้กับตัวแปร s3 เรียบร้อยแล้ว รวมถึงได้แสดงรายการออบเจกต์ทั้งหมดใน gid-requests ไว้ในตัวแปร response แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับ AWS Boto
คำแนะนำการฝึกหัด
- สำหรับแต่ละไฟล์ใน
responseให้โหลดออบเจกต์นั้นจาก S3 - โหลด
StreamingBodyของออบเจกต์เข้าสู่pandasแล้วเพิ่มลงในdf_list - ใช้
pandasเชื่อม DataFrame ทั้งหมดเข้าด้วยกัน - แสดงตัวอย่าง DataFrame ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
df_list = [ ]
for file in response['Contents']:
# For each file in response load the object from S3
obj = s3.____(____='gid-requests', ____=file['Key'])
# Load the object's StreamingBody with pandas
obj_df = pd.read_csv(obj['____'])
# Append the resulting DataFrame to list
df_list.append(obj_df)
# Concat all the DataFrames with pandas
df = pd.concat(df_list)
# Preview the resulting DataFrame
df.head()