python - 将 CSV 从 AWS S3 实例导入到 Numpy
问题描述
我一直在尝试将 csv 文件从 AWS S3 直接读取到 numpy。我用过:
s3 = boto3.client(service_name = 's3')
def s3_read(filename):
s3_obj = s3.get_object(Bucket = 'bucket-name', Key = filename)
body = s3_obj['Body']
return body.read()
作为提取数据的尝试,但我遇到了来自 AWS 的格式化问题,我不知道如何处理。
当我打印出从中返回的数据时,数据前有一个奇怪的标题:
b{\n "名称":"文件名",\n "数据":{\n "类型":"缓冲区,\n "数据:[\n 114,\n 97,...]}}
所以有一堆 \n 和奇怪的标题。这是否与我将文件上传到 AWS 的方式有关,还是我在读取文件时搞砸了?
解决方案
body.read()
返回字节。
import json
j = json.loads(s3_obj['Body'].read().decode('utf-8'))
decode
将字节转换为字符串,json.loads
将字符串解析为字典。